CSSのborderを使わないでclip-pathで三角形を作る方法【CSS】

最終更新日:

公開日:2025-02-03

ページ内に広告が含まれています。
CSSのborderを使わないでclip-pathで三角形を作る方法【CSS】

みなさんはCSSで三角形を作成する時はどのように作成しているでしょうか?
少し前まではborderプロパティで作成するのが一般的ではありましたが、今はclip-pathプロパティでの作成が多いようです。
今回は、このclip-pathプロパティを使用して三角形を作る方法を解説していきます。

borderプロパティを使った今までの三角形の作り方

冒頭で紹介したように、今まではborderプロパティを使用して三角形を作るのが一般的でした。
borderプロパティで三角形を作る場合は以下のようになります。

.triangle {
    width: 0px;
    height: 0px;
    margin: 0 auto;
    border-top: 25px solid transparent;
    border-right: 25px solid transparent;
    border-left: 25px solid transparent;
    border-bottom: 50px solid #8FC051;
}

上記のように、borderの3辺を透明にして疑似的に三角形を作る方法です。
これだとCSSが分かり難く、上記の場合だと上に余白のように透明の部分が出来てしまう為、レイアウトを合わせるのも少し大変です。
こういった苦労も無く、CSSもすっきりさせられるclip-pathプロパティを使用した三角形の作り方を解説していきます。

clip-pathプロパティについて

clip-pathプロパティは、要素のどの部分を表示するかを設定する「クリッピング領域」を指定できるプロパティです。
領域の内部は表示され、領域の外部は非表示となります。これを使用する事で、様々な形で表示が出来るようになります。

clip-pathプロパティで利用できる値は以下のとおりです。

inset()

4つの座標を定義して長方形を作成できる

circle()

半径と中心位置を定義して正円を作成できる

ellipse()

2つの半径と一を定義して楕円形を作成できる

polygon()

x軸とy軸を1セットとして、複数セットを定義し多角形を作成できる

他にもpath()・rect()・shape()・xywh()というのがありますが、使用する機会はほとんど無いかと思うので割愛させていただきます。上記の中で、三角形を作成するにはpolygon()を使用します。

また、clip-pathプロパティはIEには対応していませんので、IEでの対応が必要な場合はborderプロパティを使用して作成してください。各ブラウザの対応状況はこちらで確認できます。

clip-pathプロパティを使った三角形の作り方

clip-pathプロパティの値であるpolygon()を使用して三角形を作成しますが、作成するにはx軸・y軸を1セットとして3セットを定義する必要があります。x軸は左が0%・右が100%、y軸は上が0%・下が100%となります。
以下に作成例をいくつか紹介します。

<div class="container">
    <div class="triangle1"></div>
    <div class="triangle2"></div>
    <div class="triangle3"></div>
    <div class="triangle4"></div>
</div>
.container {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 20px;
}
.container div {
    background-color: #8FC051;
}
.triangle1 {
    width: 32px;
    height: 40px;
    clip-path: polygon(0 0, 100% 50%, 0% 100%);
}
.triangle2 {
    width: 40px;
    height: 32px;
    clip-path: polygon(0 0, 100% 0, 50% 100%);
}
.triangle3 {
    width: 32px;
    height: 40px;
    clip-path: polygon(100% 0, 100% 100%, 0 50%);
}
.triangle4 {
    width: 40px;
    height: 32px;
    clip-path: polygon(0 100%, 100% 100%, 50% 0);
}

このように、borderプロパティとは違い指定がしやすく簡単に三角形が作成できます。
三角形の大きさはwidthheightで指定出来るのでこちらも簡単です。

その他多角形などの作り方

polygon()を使用すると、三角形だけではなくいろいろな形を作成できます。
例として、五角形、星形、矢印を作成してみました。

<div class="container">
    <div class="pentagon"></div>
    <div class="star"></div>
    <div class="arrow"></div>
</div>
.container {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 20px;
}
.container div {
    background-color: #8FC051;
}
.pentagon {
    width: 60px;
    height: 60px;
    clip-path: polygon(50% 0, 0 40%, 20% 100%,80% 100%, 100% 40%, 50% 0);
}
.star {
    width: 60px;
    height: 60px;
    clip-path: polygon(50% 0, 65% 35%, 100% 35%, 70% 60%, 80% 100%, 50% 75%, 20% 100%, 30% 60%, 0% 35%, 35% 35%);
}
.arrow {
    width: 60px;
    height: 60px;
    clip-path: polygon(0 30%, 0 70%, 50% 70%, 50% 100%, 100% 50%, 50% 0, 50% 30%);
}

このように様々な形状を作成できますので、ぜひ試してみてください。

各種ジェネレーターの紹介

自身でいろんな形状を作成するのもいいですが、各種ジェネレータ―を使用してコードをコピーする事で簡単に作成できます。今回は使いやすそうな2種類のジェネレーターを紹介します。

https://bennettfeely.com/clippy
このジェネレーターでは各種形状から選ぶ事ができます。

https://mosya.dev/tools/triangle
このジェネレーターでは三角形だけにはなりますが、シンプルで使いやすいです。

さいごに

いかがでしたでしょうか。
今回は、CSSのborderを使わないでclip-pathで三角形を作る方法を解説しました。
従来のborderで作成するよりも簡単に出来ますのでぜひ試してみてください。

おすすめ記事

当ブログ運営者 ヒデ

北海道札幌市在住のフリーランスでWeb制作を行っているヒデです。Webコーディング(HTML・CSS・JSなど)やWordpressのカスタマイズ等のテクニック、困った時に確認できる分かりやすい解説を目標にして情報を発信していければと思っています。プロフィールはこちら

当サイトに関するご意見・ご感想・ご要望または仕事のご依頼は以下のフォームよりお願い致します。

お問い合わせ お仕事のご依頼

各SNSのフォローはこちらから

PAGE TOP