cssのみで三角形・矢印やリボンを表現する最新の方法、レスポンシブにも対応!

css

三角形の矢印的な表現

【図1】のような三角形の矢印のような表現をCSSのみでするとき、borderを使った方法がよく取り上げられているのですが、あれって使い勝手悪くないですか?
特に写真の上に配置したい時とか、三角形の幅を自由に可変させたいときとか困ることが多いイメージです。
そこで、今回これらの問題も解消される新しい方法を見つけたのでご紹介します。

linear-gradientを使った三角形の作り方

今回、三角形をつくるのにcssでグラデーション作成する際にもつかわれるlinear-gradientを使います。
ポイントは、linear-gradientは斜め方向にグラデーションを掛けることも可能だということです。
簡単なサンプルを作ってみます。

html

css

結果

解説
これは、.box1の背景を三角で表現した例になります。
backgroundが「,」で区切られて2パートに分かれていますが、三角形が2つ組み合わさって1つの三角形を形成している形になります。
background-size100% 50%で表現されていることからわかる通り、上50%、下50%でパート分けされています。
linear-gradientで三角形を表現していますが、支点から50%までを透明(transparent)で表現しているので、画像にかぶせて使っても透明部分は確保されます。

わかりやすくパート分けしてみます

linear-gradientを色分してどの部分がどう構成されているか観察してみます。

結果

解説
上半分が、to bottom leftなので左下に向かて赤→緑に変化
下半分が、to top leftなので左上に向かって黄→青に変化

こうしてみるとわかりやすいですね!
この構造自体を理解できているといろいろ応用がきくのでとっても便利です。

linear-gradientの三角形を使った応用術

タイトルなどに使われるリボンを表現する

linear-gradientで三角形を作る方法を使えばリボン付きの帯なども簡単に作れます。
html

css

結果

ダミーテキストダミーテキストダミーテキストダミーテキスト

上下に別れた3角形の配置を変えることでリボンのような形を表現することができました。
「ダミーテキスト」が折り返してもリボンの高さが可変しデザインが維持されます。

矢印三角を写真にかぶせてみた

画像の上に矢印が被るようなデザインもlinear-gradientの三角形なら簡単にできます。

sample

linear-gradientの三角形だからできる!矢印三角にボーダーつけてみた

html

css

結果

ちょっと微妙な感じではありますが、上記のように矢印三角形部分にボーダーをつけることができました。

コピペでOK!三角形の基

まとめとして、ここに上下左右のcssを記述しておきたいと思います。
これをコピーしてcssに適応するだけど簡単に三角形を表現できます。

三角右向き

結果

三角左向き

結果

三角上向き

結果

三角下向き

結果