CSS Web制作

【CSS】clip-pathに影(shadow)を付ける2つの方法【三角形もOK】

2024年2月25日

※ 当サイトではアフィリエイト広告を利用しています

clip-pathで作った三角形や星形に影(shadow)を付けることってできる?

例えば、以下のような図形があったとします。

See the Pen
Untitled
by junpei (@junpei-sugiyama)
on CodePen.

三角形と星形は、clip-pathを使っています。

これに対して影を付けるbox-shadowを書くと、このようになります。

See the Pen
Untitled
by junpei (@junpei-sugiyama)
on CodePen.

clip-pathを使っている図形は、影が付いていません。

これを解決する方法を、解説していきます。

じゅんぺいブログは、Web制作コーディングWordPress制作)の技術記事を中心に、約500記事公開しています。ぜひ他の記事も参考にしてみてください!
完全無料のプログラミングスクール『ZeroPlus Gate』
30日間でWeb制作を学べる無料のプログラミングスクールがこちら
いきなり数十万するプログラミングスクールは厳しい・・・という人のお試しに最適です。
現在は無料ですがいつ有料になるか分からないので、気になる方はお早めに👇
(有料になっていたらすいません🙇‍♂️)

\ 完全無料 /

ZeroPlus Gate公式サイト

毎日先着制!

clip-pathに影(shadow)を付ける方法

まず、先ほどのHTMLはこちらになります。

<div class="container">
  <div class="box box-shadow"></div>
  <div class="triangle box-shadow"></div>
  <div class="star box-shadow"></div>
</div>

CSSはこちらです(要素同士の余白や、サイズは省略しています)

.box-shadow {
  box-shadow: 5px 5px 5px rgba(0, 0, 0, .6);
}
.box {
  background-color: #1cb4d3;
}
.triangle {
  background-color: #1cb4d3;
  clip-path: polygon(0 100%, 50% 0, 100% 100%);
}
.star {
  background-color: #1cb4d3;
  clip-path: polygon(50% 0%, 61% 35%, 98% 35%, 68% 57%, 79% 91%, 50% 70%, 21% 91%, 32% 57%, 2% 35%, 39% 35%);
}

全ての要素にbox-shadowを書いていますが、影が付いているのはclip-pathを使っていないboxだけです。

clip-pathを使った三角形の作り方は、以下の記事を参照下さい。

あわせて読みたい
【サンプル付き】CSSで三角形を作る2つの方法(border、clip-path使用)
CSSで三角形を作る2つの方法(clip-path、border使用)

続きを見る

星形や五角形なども作れますが、それについては以下のサイトが便利です。

Clippy — CSS clip-path maker

それでは、clip-pathを使った要素に影を付けていきますが、2つの方法があります。

 

drop-shadowを使う方法

drop-shadowを使う場合は、HTMLを以下のようにします。

<div class="container">
  <div class="clip-path-shadow">
    <div class="triangle"></div>
  </div>
  <div class="clip-path-shadow">
    <div class="star"></div>
  </div>
</div>

先ほどと違うのは、clip-pathを使う要素をdivタグで囲っているところです。

<!-- 変更前 -->
<div class="triangle"></div>
<div class="star"></div>
<!-- 変更後 -->
<div class="clip-path-shadow">
  <div class="triangle"></div>
</div>
<div class="clip-path-shadow">
  <div class="star"></div>
</div>

そして、追記したCSSはこちらです。

.clip-path-shadow {
  filter: drop-shadow(5px 5px 5px rgba(0, 0, 0, .6));
}

ここでは、box-shadowではなくfilterdrop-shadowを使っています。

デモはこちらです。

See the Pen
Untitled
by junpei (@junpei-sugiyama)
on CodePen.

四角形は、先ほどと同じくbox-shadowを使っています。

 

擬似要素を使う方法

擬似要素を使う場合は、HTMLはそのままでOKです。

<div class="container">
  <div class="triangle"></div>
  <div class="star"></div>
</div>

そして、三角形と星形の両方のCSSを書くと見にくいので、三角形のCSSだけ書きます(要素同士の余白や、サイズは省略しています)

/* 変更前 */
.triangle {
  background-color: #1cb4d3;
  clip-path: polygon(0 100%, 50% 0, 100% 100%);
}
/* 変更後 */
.triangle {
  filter: drop-shadow(5px 5px 5px rgba(0, 0, 0, .6));
  position: relative;
}
.triangle::before {
  background-color: #1cb4d3;
  clip-path: polygon(0 100%, 50% 0, 100% 100%);
  content: "";
  display: block;
  height: 100%;
  position: absolute;
  width: 100%;
}

つまり、背景色のbackground-colorclip-pathは、要素ではなく擬似要素に書き換えます。

デモはこちらです。

See the Pen
clip-pathに影(shadow)を付ける方法④
by junpei (@junpei-sugiyama)
on CodePen.

見た目はdrop-shadowを使う方法と同じです。

まとめ:clip-pathに影を付けるには、drop-shadowか擬似要素を使う

今回は、clip-pathに影を付ける方法を2つご紹介しました。

それぞれの特徴はこちらです。

drop-shadow

HTMLは影を付けたい要素をdivタグで囲む。CSSは一行書くだけ。

擬似要素

HTMLはそのままでOK。CSSは擬似要素を使い、元のCSSを削除したり少しややこしい。

HTMLを変えても良いけどCSSは簡単にしたい場合はdrop-shadowを使い、HTMLを変えたくない場合は擬似要素を使うのが良いかと思います。

以上になります。

この記事が役に立ったと思ったら、シェアボタンからX(旧Twitter)などにシェアすると、いいねされてフォロワーが増えたりすることがあるよ!

 

  • この記事を書いた人

じゅんぺい

37歳からWeb制作とブログ開始。Web制作歴5年目でコーディングとWordPressオリジナルテーマ制作が中心。これまで120件以上を納品。当ブログ月間最高15万PVで、370記事以上はWeb制作の技術記事。コンテンツ販売→累計売上1200万円&1500部超え。X(旧Twitter)フォロワー7200人以上。2024年3月からブログの経験を活かしてライターとしても活動を開始。

-CSS, Web制作