CSSで三角形を作って、チャット風吹き出し会話を作ってみる
チャットなどで見かける対話式レイアウト。画像を使わずCSSのみで作成します。
CSSで基本的な三角形の作り方
CSSのborderを使って三角形を作ります。最初にボックスの幅と高さを0pxとします、もちろんこのままだと何も見えません。ここにborderで線幅を指定することで、borderがボックスの外側に向かって広がります。この時、上下左右が斜めに交わっているので、下向きの三角が作りたい場合は、「border-top(トップ)」に色を指定するとDEMOのような三角形ができます。
.sankaku-sample1{ width:0; height:0; border:100px solid transparent; border-top:100px solid #ff0000; }
全てのborderに色付けしてみると
.sankaku-sample2{ width:0; height:0; border-top:100px solid #ff0000; border-left:100px solid #0000ff; border-right:100px solid #009900; border-bottom:100px solid #FFFF00; }
色分けすることで、分かりやすくなったとも思います。この三角を応用して吹き出し会話を表現します。
チャット風吹き出し会話を表現
チャット風会話の基本HTML
基本となるHTMLを用意します。会話になるひとつひとつは後で編集しやすいように「.message」でまとめる単純な構成にします。ここでインライン要素があるspanを入れとくと後々便利になるので入れます。
チャット風会話の基本CSS
基本となるCSS作成します。span要素にブロックボックスを生成できる「display:block;」指定しておきます。
.message{ overflow:hidden; margin:0 50px 10px 50px; padding:0; } .message span{ display:block; margin:0; padding:0; }
次に発言者用のCSSを装飾します。「.fukidashi-content」ではmarginで三角が表示されるように左右に10pxの空きを作ります。
.message .fukidashi-content{ position:relative; box-sizing:border-box; width:350px; min-height:60px; margin:0 10px; padding:10px; border-radius:10px; background:#99CCFF; }
発言者の吹き出しCSS
吹き出し部分のCSSです。「.fukidashi-content」に対して、直前に内容を挿入する「:before」擬似要素を追加します、それにborderを指定すると吹き出し三角形が描けます。
.message.reverse .fukidashi-content:before{ right:-20px; left:auto; border-color:transparent; border-left-color:#99CCFF; }
逆の発言者の吹き出しCSS
「.message」に対して「.reverse」というクラスを追加して、吹き出しを逆向きにするスタイルを追加します。marginの方向と位置を調整すれば大丈夫です。
.message .fukidashi-content:before{ border:10px solid transparent; border-right-color:#99CCFF; position:absolute; top:20px; left:-20px; display:block; width:0; height:0; content:""; }
まとめ
会話型のレイアウトはいかがだったでしょうか?最近は使う回数は少ないかもしれませんが、「よくある質問(Q&A)」ページなど普通の文字のみで会話をレイアウトするよりは、吹き出しを加えて会話型にするとより説得力が増すと思います。