CSS Web制作

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

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

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を使っている図形は、影が付いていません。

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

 

完全無料のプログラミングスクール『ZeroPlus Gate』
30日間でWeb制作を学べる無料のプログラミングスクールがこちら
  • 30日間でWeb制作を学べる
  • 完全無料
  • 現役エンジニアへの質問無制限
  • オンラインの動画学習なので時間場所を問わず勉強可能
  • 最大4回の学習サポート面談
  • 受付は1日25名までの先着制
無料なのに専属のメンターが付き、現役エンジニアへの質問も無制限という破格のサービスです。
いきなり数十万するプログラミングスクールは厳しい・・・という人のお試しに最適。
現在は無料ですがいつ有料になるか分からないので、気になる方はお早めに👇

\ 完全無料 /

ZeroPlus Gate公式サイト

先着1日25名まで!

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を変えたくない場合は擬似要素を使うのが良いかと思います。

以上になります。

 

Web制作おすすめ教材と案件獲得サービス
当ブログではWeb制作学習におすすめの教材を厳選してご紹介しています。
こちらの記事を参考に教材を購入して成果を出している人もたくさんいるので、自分に必要な教材を探してみて下さい。
また、学習面だけでなく営業面である案件獲得サービスもご紹介しています。
スキルが身についても仕事がなければ意味がないので、営業に不安がある人はこちらの記事をぜひ参考にしてみて下さい。
この記事を参考にスキルと営業力を身につけて稼げるようになりましょう!

-CSS, Web制作