[CSS] borderを使わずclip-pathで「三角▲」を作る
2 min read
背景
これまで CSS だけを利用して三角形を作る際は border
を利用することが多かった。
/* 縦横 100px の三角形を作成する */
.triangle {
width: 0;
height: 0;
border-left: 50px solid transparent;
border-right: 50px solid transparent;
border-bottom: 100px solid var(--color);
}
border
を利用した実装だと何を表現しているのか一見してもわかりづらい。
実装方法
border
ではなく、clip-path
プロパティにpolygon()
関数を利用する。
サンプル
/* 縦横 100px の三角形を作成する */
.triangle {
height: 100px;
width: 100px;
background: var(--color);
clip-path: polygon(50% 0%, 0% 100%, 100% 100%);
}
種別
上向き
.triangle {
clip-path: polygon(0 100%, 50% 0, 100% 100%);
}
下向き
.triangle {
clip-path: polygon(0 0, 50% 100%, 100% 0);
}
右向き
.triangle {
clip-path: polygon(0 0, 0 100%, 100% 50%);
}
左向き
.triangle {
clip-path: polygon(100% 0, 0 50%, 100% 100%);
}