CSSだけで斜めのデザイン背景を作る方法

2023年 1月 5日 Posted 藤原(フロントエンドエンジニア)

今回はCSSで背景を斜めにしてみたいと思います。

背景の上下を少し斜めのデザインにしたページをたまに見かけます。
制作する人によっていろいろなやり方がありますが、CSSプロパティの「clip-path」を使って上下斜めの背景を作成してみたいと思います。

ここにテキストが入ります。ここにテキストが入ります。ここにテキストが入ります。ここにテキストが入ります。ここにテキストが入ります。ここにテキストが入ります。ここにテキストが入ります。ここにテキストが入ります。ここにテキストが入ります。ここにテキストが入ります。ここにテキストが入ります。ここにテキストが入ります。ここにテキストが入ります。ここにテキストが入ります。

clip-pathで斜めのデザイン背景を作る

clip-pathとは

要素をクリッピング(切り抜き)するときに使用します。
クリッピング領域を作り、基本四角形のものを自在に変えることができます。

指定したクリッピング領域の外側が非表示になり、内側だけが表示されます。

clip-pathによって「円形」や「三角形」「台形」など、いろいろな形にすることができます。

clip-pathの形状の種類

サポート状況

サポートされているブラウザーやバージョンを確認して使用すると安心ですね。

https://caniuse.com/?search=clip-path

設定方法

今回は「polygon(多角形)」という値をつかって、上下斜めの背景を作っていきます。

clip-path( )に下記の設定をします。

		/* 値の記述順の説明です。*/
		clip-path:
		polygon(
		0 0,                 /* 左 上 [1]の X軸 Y軸 */
		100% 0,          /* 右 上 [2]の X軸 Y軸 */
		100% 100%,   /* 右 下 [3]の X軸 Y軸 */
		0 100%)         /* 左 下 [4]の X軸 Y軸 */
	
		/* 下記の様に記述します。*/
		clip-path: polygon(0 0, 100% 0, 100% 100%, 0 100%);

上記コードを追加するだけで、要素が設定した形に切り抜かれます。

実際に記述してみましょう。

.diagonal-bg-test-step01 {
	display:block;
	width:710px;
	height:400px;
	background:#F296C5;
	clip-path:polygon(0 0, 100% 0, 100% 100%, 0 100%);
}

角を4カ所設定。四角形になります。
左上[1]のY軸の数値を調整して(下に20%ずらす)、斜めにしてみます。

.diagonal-bg-test-step02 {
	display:block;
	width:710px;
	height:400px;
	background:#F296C5;
	clip-path:polygon(0 20%, 100% 0, 100% 100%, 0 100%);
}

斜めになりました。

どのくらいの角度で斜めにするかどうかは、デベロッパーツールを起動してブラウザー上で図形を編集できるので調整が簡単にできます。
実際に数値を動かしながら、希望の図形を作ることができるのでおすすめです。

デベロッパーツールで調整してみる

Firefoxのデベロッパーツールを起動して、該当の図形を選択します。
すると、cssの「clip-path: polygon」の横にアイコンが見えますのでそのアイコンをクリックします。

図形の角に丸いマークが出現しますので、●をつまんで動かすと自由に変形できます。

右下 [3]の Y軸の数値を調整する(上に20%上げる)と……

.diagonal-bg-test-step03 {
	display:block;
	width:710px;
	height:400px;
	background:#F296C5;
	clip-path:polygon(0 20%, 100% 0, 100% 80%, 0 100%);
}

完成です!

いろいろな図形

斜め背景以外にもclip-pathを使えば、さまざまな形に切り抜きすることができます。

星形

.shape-star{
	display:block;
	width:100px;
	height:100px;
	margin:3rem 0;
	background:#FFE000;
	clip-path:polygon( 50% 0%, 61% 35%, 98% 35%, 68% 57%, 79% 91%, 50% 70%, 21% 91%, 32% 57%, 2% 35%, 39% 35%);
}

吹き出し

吹き出し

.shape-balloon{
	position:relative;
	display: block;
	width: 200px;
	height: 150px;
	margin:3rem 0;
	box-sizing:border-box;
	background:#FFE000;
	clip-path: polygon(0% 0%, 100% 0%, 100% 75%, 75% 75%, 75% 100%, 50% 75%, 0% 75%);
}
.shape-balloon p{
	position:absolute;
	margin-top:0;
	top:calc(50% - 50px);
	left:calc(50% - 33px);
}

吹き出し(角丸)

roundで角を丸くしました。

角丸!

.shape-balloon-rounded{
	position:relative;
	margin:3rem 0 6rem;
	width:150px;
}
.shape-balloon-rounded::before{
	position:absolute;
	content: "";
	display: block;
	bottom: -20px;
	right: 28px;
	width:50px;
	height:80px;
	background:#cae6fd;
	clip-path: polygon(0 0, 100% 100%, 100% 0);
}
.shape-balloon-rounded .detail{
	display: block;
	width: 150px;
	height: 100px;
	padding-top:20px;
	box-sizing:border-box;
	background:#cae6fd;
	clip-path: inset(0 round 10px);
}
.shape-balloon-rounded p{
	position:absolute;
	margin-top:0;
	top: calc(50% - 30px);
	left: calc(50% - 23px);
}

四角の写真を丸く変更したい!

そんな時も画像加工ではなくclip-pathで対応できます。
画像処理ソフトがない時はとても便利ですね。

.shape-portrait p img{
	clip-path:circle(124px at 50% 50%)
}

まとめ

clip-pathを使えば、自由な図形を作ることができます。ぜひいろいろ試してみてはいかがでしょうか?