CSSのborderではなくclip-pathを使用した三角アイコンの作り方

border -> clip-pathで三角アイコン作成

CSSで三角のアイコンを作成する際はborderがよく使用される。

しかし、borderは本来はその名の通り枠線のためのCSSプロパティなので三角アイコンを作成するのに適さない。

borderを使用したコードは以下のようになり、アイコンのサイズや指定するプロパティがわかりづらい。

/* <i class="triangle"></i>Sample */
.triangle {
  display: inline-block;
  position: relative;
  top: -1px;
  margin-right: 5px;
  border-top: 5px solid transparent;
  border-bottom: 5px solid transparent;
  border-left: 8px solid #c00;
}
Sample

clip-pathだとwidth, height, backgroundとclip-path: polygon(0 0, 0 100%, 100% 50%);を記述すれば良いのでborderより指定した結果がわかりやすい。

/* <i class="arrow"></i>Sample */
.arrow {
  display: inline-block;
  position: relative;
  top: -1px;
  width: 8px;
  height: 10px;
  margin-right: 5px;
  clip-path: polygon(0 0, 0 100%, 100% 50%);
  background: #c00;
  vertical-align: middle;
}
Sample

リスト(liタグ)で使用する場合は以下のようになる。

.arrowList > li::before {
  content: "";
  display: inline-block;
  position: relative;
  top: -1px;
  width: 8px;
  height: 10px;
  margin-right: 5px;
  clip-path: polygon(0 0, 0 100%, 100% 50%);
  background: #c00;
  vertical-align: middle;
}
  • Sample1
  • Sample2
  • Sample3

CSSのclip-pathプロパティはborderと同様に現在ほとんどのブラウザで使用可能なのでなるべくborderよりもclip-pathを使用したほうが良いだろう。

clip-path - CSS: カスケーディングスタイルシート | MDN

カテゴリーcss