CSSだけで斜めのデザイン背景を作る方法
2023年 1月 5日 Posted 藤原(フロントエンドエンジニア)
今回はCSSで背景を斜めにしてみたいと思います。
背景の上下を少し斜めのデザインにしたページをたまに見かけます。
 制作する人によっていろいろなやり方がありますが、CSSプロパティの「clip-path」を使って上下斜めの背景を作成してみたいと思います。
ここにテキストが入ります。ここにテキストが入ります。ここにテキストが入ります。ここにテキストが入ります。ここにテキストが入ります。ここにテキストが入ります。ここにテキストが入ります。ここにテキストが入ります。ここにテキストが入ります。ここにテキストが入ります。ここにテキストが入ります。ここにテキストが入ります。ここにテキストが入ります。ここにテキストが入ります。
clip-pathで斜めのデザイン背景を作る
clip-pathとは
要素をクリッピング(切り抜き)するときに使用します。
 クリッピング領域を作り、基本四角形のものを自在に変えることができます。
指定したクリッピング領域の外側が非表示になり、内側だけが表示されます。

clip-pathによって「円形」や「三角形」「台形」など、いろいろな形にすることができます。
clip-pathの形状の種類
- inset( ) …… 内側へのオフセット(通常は長方形)
- circle( ) …… 円
- ellipse( ) …… 楕円(だえん)
- polygon( ) …… 多角形
サポート状況
サポートされているブラウザーやバージョンを確認して使用すると安心ですね。
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%);上記コードを追加するだけで、要素が設定した形に切り抜かれます。
- * 内部のコンテンツは表示されて、外部のコンテンツは非表示になります。
- * マスクして切り抜くイメージですので、box-shadowやborderは思った通りに表示されない場合があります。
実際に記述してみましょう。
.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を使えば、自由な図形を作ることができます。ぜひいろいろ試してみてはいかがでしょうか?
