【CSS】clip-pathで自由な形の背景

CSSのclip-pathを使って、背景を斜めに切り抜くレイアウトを紹介します。擬似要素「::after」を利用することで、画像や文章はそのままに、背景だけを自由な形に変更できます。polygon()による形状の指定方法や、Flexboxを使った横並びの配置を、HTMLとCSSのサンプルコード付きで解説します。
HTMLサンプル
<div class="bg-clip-path">
<div class="flex-block">
<figure><img src="images001.jpg" alt="画像"></figure>
<div class="text-unit">
<h3>見出しが入ります</h3>
<p>説明文が入ります。説明文が入ります。説明文が入ります。説明文が入ります。説明文が入ります。説明文が入ります。</p>
</div>
</div>
</div>Clip-pathジェネレーターを使う
clip-path ジェネレーター

STEP
1
形を選択

STEP
2
○をドラッグで自由な形に変更可能


STEP
3
「コードをコピー」をクリック

STEP
4
CSSに貼り付け

STEP
5
コピペで使えるCSSサンプル
/* 背景の設定 */
.bg-clip-path{
position: relative;
isolation: isolate;/* 重なり順 */
}
.bg-clip-path::after{
content: "";
position: absolute;
z-index: -1;/* 重なり順 */
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: #A5D0F7;/* 背景色 */
clip-path: polygon(25% 0%, 100% 0%, 75% 100%, 0% 100%);
-webkit-clip-path: polygon(25% 0%, 100% 0%, 75% 100%, 0% 100%);
}
/* 横並びのレイアウト */
.flex-block {
display: flex;
align-items: center;
justify-content: space-between;
width: 100%;
max-width: 1100px;
margin: 0 auto;
padding: 4rem 0;
}
.flex-block figure {
width: 40%;
margin: 0;
}
.flex-block figure img {
display: block;
width: 100%;
height: auto;
}
.flex-block .text-unit {
width: 55%;
}
なぜ擬似要素を使うのか?
bg-clip-pathのブロックに直接clip-pathを設定すると、見切れてしまう為、
背景だけでなく、親要素の中にある画像や文章もまとめて切り抜きの対象になる。
/* 直接設定したNG例 */
.bg-clip-path{
background-color: #A5D0F7;/* 背景色 */
clip-path: polygon(25% 0%, 100% 0%, 75% 100%, 0% 100%);
-webkit-clip-path: polygon(25% 0%, 100% 0%, 75% 100%, 0% 100%);
}


【 親要素に指定 】
画像や文章も切り抜かれる

【 擬似要素に指定 】
背景だけを切り抜ける
clip-path解説
clip-path: polygon(
25% 0%,
100% 0%,
75% 100%,
0% 100%
);
この4点を順番につなぐことで、左右が斜めになった平行四辺形を作っている。
なお、clip-path は要素の大きさそのものを変更するわけではない。指定した形の外側を見えなくする仕組み
