twicliで文字カウンタ部分に使っている、画像を使わずにCSSのみで吹き出し作る方法です。
こういうの。
三角形の書き方
隣り合う二辺で色が異なるボーダーを駆使すると、直角三角形が描けます。順を追って説明すると、
下のように上と右で色が違うボーダーを指定すると、次のようになります。
<style> #balloon-p1 { border-top: solid 9px red; border-right: solid 9px #99f; width: 10; height: 10; background-color: yellow; } </style> <div id="balloon-p1"></div>
黄色部分が要素の本体、赤が上のボーダー、青が右のボーダーです。
余分な色指定は外して、最終的にはこんな感じのソースに。
<style> #balloon-p1 { border-top: solid 9px transparent; border-right: solid 9px #99f; width: 0; height: 0; } </style> <div id="balloon-p1"></div>
並べて吹き出しにする
上の直角三角形(balloon-p1)のすぐ右隣に、左右反転した要素(balloon-p2)を float: left; で(隙間無く)並べると、吹き出し部分になります。
また、その下に中身を書くボックス(balloon-c)を配置します。背景色は吹き出しのボーダーと同色に。あとは位置を調整するために、全体をdiv要素(balloon)でくくっておきます。このdivの幅を適当に指定しないとIEでおかしなことになります。
これで以下のような結果が得られます(右側はわざと隙間を空けて配置した例)。
最終的には、以下のようなソースに。なおp1, p2のmargin, paddingは明示的に0にした方が良いかもしれません。
<style> #balloon { position: absolute; /* width: 200px; */ } #balloon-p1 { border-top: solid 9px transparent; border-right: solid 5px #99f; margin-left: 8px; # 吹き出しの横方向の位置 float: left; width: 0; height: 0; } #balloon-p2 { border-top: solid 9px transparent; border-left: solid 5px #99f; float: left; width: 0; height: 0; } #balloon-c { background-color: #99f; padding: 3px; clear: left; } </style> <div id="balloon"> <div id="balloon-p1"></div> <div id="balloon-p2"></div> <div id="balloon-c">ふきだし!</div> </div>
応用 - CSSだけで「「
http://twitter.com/syou6162/statuses/1234975204 に応えて。
こんなのも描けます。ちょっと微妙?
<style> body { background-color: #000; } #usagi { position: absolute; } #usamimi-p1 { border-bottom: solid 16px transparent; border-left: solid 9px white; margin-left: 9px; float: left; width: 0; height: 0; } #usamimi-p2 { border-bottom: solid 16px transparent; border-left: solid 9px white; margin-left: 8px; float: left; width: 0; height: 0; } #usagi-c { background-color: white; padding: 3px; clear: left; } </style> <div id="usagi"> <div id="usamimi-p1"></div> <div id="usamimi-p2"></div> <div id="usagi-c">・・</div> </div>