【矢印や吹き出しも作れちゃう】CSSだけで作れる三角形
CSSのボーダーの特性(といっていいのかな?)を利用すると、スタイルシートだけで三角形が作れます。
矢印や吹き出しみたいなデザインに便利です。
画像を利用した実装に比べて、色や大きさをすぐ調整できるのも大助かりです。
この記事で分かること
- CSSで三角形を作る方法
- CSSで三角形を作るメリット
豊かに引きこもる。
Webデザインは器。ブログは中身。
「レンちゃんとペンタ」では、2つのスキルを掛け合わせて、
おウチで豊かに楽しく暮らす方法をご紹介しています。
スタイルシートで三角形を作るしくみ
上向き三角形
実は、三角を作るためのCSSがあるわけではなく、ボーダー(border)サイズ設定の特性を利用して三角形に見せている、というのが種明かしです。
以下はCSSだけで描いた上向き三角形です。
こんなスタイルシートでできています。
ちょっと理解に苦しむ内容ですが、
1.要素自体のサイズは幅0、高さ0にする
2.三角形の本体はborder-bottomで作る(border-bottom:34pxが三角形の高さになる)
3.border-left / border-rightで透明のボーダーを施すと、2で作ったボーダーが左右から20pxずつ削り取られて、三角になる
という考え方です。
正三角形を作りたい場合、辺や高さは以下のような比率で求められるので、
「border-bottom : border-left : border-right = 1.7 : 1 : 1」
で設計すれば正三角形になります。
その他の向きの三角形も、各ボーダーの役割を交代させて作ることができます。
一応サンプルを載せておきますね。
下向き三角形
border-bottomにやらせた仕事を、border-topで行えば下向き三角形になります。
右向き三角形
こちらも考え方は同じです。
左向き三角形
border-leftで行っていた設定がborder-rightに変わっただけですね。
画像ナシ!CSSだけで作る矢印と吹き出し
この仕組みを利用してよく作られているのが、矢印と吹き出しのデザインです。
矢印の作り方
ここでは、こんな矢印を作ってみます。
画像を使わないので、HTMLはこれだけで済んじゃいます。
続いてCSS。三角形部分は疑似要素(::before)で作り、位置をpositionで調整します。
これだけで完成です。
CSS周りはちょっと忙しくなりますが、HTMLはp要素だけでスッキリ仕上げることができます。
足付き矢印の作り方
さらにもう一つの擬似要素である::afterを足して、足付き矢印も作ってみます。
・テキスト本体はp要素で作る
・矢印の三角部分は::before要素で作る
・矢印の足の部分は::after要素で作る
という考え方です。
HTMLは先ほどと同じp要素だけ。
CSSは、矢印の足の部分だけ::after要素としてに追加します。
吹き出しの作り方
矩形にちょっと三角を添えれば、吹き出しにもなっちゃいます。
HTMLはやっぱりこれだけでOK。
CSSはこんな感じです。
本体のp要素に背景色をつけて、やはり::beforeで同系色の三角形を足しています。
スタイルシートで三角形を作るメリット
画像を利用せずにCSSで三角形を作ると、こんな利点があります。
・構造(HTML)とデザイン(CSS)の分離
・色やサイズ、位置の調整がラク
構造(HTML)とデザイン(CSS)の分離
・テキスト部分(「詳しくはこちら」など)→文書構造(HTML)
・三角部分→装飾(CSS)
のように、それぞれの役割を適切に分担させる事ができます。
色やサイズ、位置の調整がラク
矢印の色を変えたい、吹き出しの三角部分のサイズを大きくしたい等、制作では微調整が多々起こります。
要素を画像で作成している場合は、一旦IllustratorやPhotoshopなどに戻って、画像の書き出しからやり直さなくてはいけませんが、CSSなら数値をちょこっと変えるだけで変更できるのでラクチンです。
まとめ
- CSSで作る三角形まとめ
-
- CSSの特性を使って、三角形を作る事ができる
- CSSで三角形を作ると、構造とデザイン(HTMLとCSS)の棲み分けがしやすい場合も
- CSSで作る三角形は、画像より修正がラク
この方法はかなり昔からある用法らしく、また偶然三角形に見えてる感も否めなかったので、そのうち使用できなくなるのではないかと思っていたのですが、現在でも安定して使えています。
ボーダーの解釈や、擬似要素との組み合わせが入った時のややこしさはありますが、理屈がわからなくとも、本ページのコードをコピーしてカスタマイスすれば利用できますので、ぜひご活用ください。