CSSのグラデーションの設定方法に関して、あらためてまとめてみます。
線形グラデーション
CSSのグラデションは線形グラデーション(linear-gradient())、放射グラデーション(radial-gradient())、扇形グラデーション(conic-gradient())の3種類です。
まずは線形グラデーションを試してみます。
<div class="sample sample-basic"></div>
線形グラデーションの設定にはlinear-gradient()を使い、引数にグラデーションで使用する色を指定します。
.sample { width: 200px; height: 200px; } .sample-basic { background-image: linear-gradient(red, blue); }
これで上(red)から下(blue)へのグラデーションの設定ができました。
線形グラデーションのデモページ
グラデーションの方向を指定する場合、第一引数に方向の指定を行います。
<div class="sample sample-right">右方向へ</div> <div class="sample sample-right-bottom">右下方向へ</div> <div class="sample sample-0deg">上方向へ(0deg)</div> <div class="sample sample-45deg">右上方向へ(45deg)</div>
「to right」や「to bottom right」といった文字列の指定や、degを使った角度での指定などができます。
.sample-right { background-image: linear-gradient(to right, red, blue); } .sample-right-bottom { background-image: linear-gradient(to bottom right, red, blue); } .sample-0deg { background-image: linear-gradient(0deg, red, blue); } .sample-45deg { background-image: linear-gradient(45deg, red, blue); }
0degの場合は下から上へのグラデーションになり、そこから数値を増やすと時計回りに角度が移動します。
線形グラデーションのデモページ2
ここまでは2色でのグラデーションの設定でしたが、色数を増やしたり各色の位置を指定することもできます。
<div class="sample sample1">4色の設定</div> <div class="sample sample2">左から25%の位置までが赤、そこから50%の位置で黄色、75%の位置でピンク、右端で青に変わるグラデーション</div> <div class="sample sample3">左半分が赤、右半分が青</div> <div class="sample sample4">左から赤、黄色、ピンク、青の4等分</div>
色の位置を指定する場合、半角スペースを開けて%やpxで位置の指定をします。
.sample1 { background-image: linear-gradient(to right, red, yellow, pink, blue); } .sample2 { background-image: linear-gradient(to right, red 25%, yellow 50%, pink 75%, blue 100%); } .sample3 { background-image: linear-gradient(to right, red 50%, blue 50%); } .sample4 { background-image: linear-gradient(to right, red 25%, yellow 25%, yellow 50%, pink 50%, pink 75%, blue 75%, blue 100%); }
指定方法によってはサンプル3や4のように、グラデーションではなくべた塗りのような設定もできます。
線形グラデーションのデモページ3
グラデーションは透明度も対応しているので、グラデーションを複数指定して重ね合わせることもできます。
<div class="sample sample1">設定1</div> <div class="sample sample2">設定2</div> <div class="sample sample3">設定3</div> <div class="sample sample4">3つの重ね合わせ</div>
.sample1 { background-image: linear-gradient(217deg, rgba(255,0,0,.8), rgba(255,0,0,0) 70.71%); } .sample2 { background-image: linear-gradient(127deg, rgba(0,255,0,.8), rgba(0,255,0,0) 70.71%); } .sample3 { background-image: linear-gradient(336deg, rgba(0,0,255,.8), rgba(0,0,255,0) 70.71%); } .sample4 { background-image: linear-gradient(217deg, rgba(255,0,0,.8), rgba(255,0,0,0) 70.71%), linear-gradient(127deg, rgba(0,255,0,.8), rgba(0,255,0,0) 70.71%), linear-gradient(336deg, rgba(0,0,255,.8), rgba(0,0,255,0) 70.71%); }
放射グラデーション
次に放射グラデーションを試してみます。
放射グラデーションは指定位置から放射状にグラデーションが広がります。
<div class="sample sample-basic"></div>
放射グラデーションの設定にはradial-gradient()を使います。
.sample { width: 400px; height: 200px; } .sample-basic { background-image: radial-gradient(red, blue); }
上記例では長方形の要素に対して楕円形のグラデーションになりましたが、形状の指定もできます。
指定できる値はcircle(正円)かellipse(楕円)で、初期値はellipseになります。
<div class="sample sample-ellipse"></div> <div class="sample sample-circle"></div>
.sample-ellipse { background-image: radial-gradient(ellipse, red, blue); } .sample-circle { background-image: radial-gradient(circle, red, blue); }
上の2つのデモでは要素の中心位置からグラデーションが始まりましたが、グラデーションの開始位置を指定することもできます。
<div class="sample sample-left-bottom">左下を中心</div> <div class="sample sample-right-top">右上を中心</div>
atの後に半角スペースで開けて、数値やキーワードでの指定を行います。
.sample-left-bottom { background-image: radial-gradient(at 0% 100%, red, blue); } .sample-right-top { background-image: radial-gradient(at right top, red, blue); }
次に大きさの指定について試してみます。
指定できる値にはclosest-side、closest-corner、farthest-side、farthest-cornerがあり、初期値はfarthest-cornerになります。
<div class="sample sample1">closest-side</div> <div class="sample sample2">closest-corner</div> <div class="sample sample3">farthest-side</div> <div class="sample sample4">farthest-corner</div>
違いを比べられるように、形状の指定がellipse(楕円)の場合とcircle(正円)の場合をそれぞれ試してみます。
まずはellipse(楕円)の場合です。
.sample1 { background-image: radial-gradient(closest-side, red, blue); } .sample2 { background-image: radial-gradient(closest-corner, red, blue); } .sample3 { background-image: radial-gradient(farthest-side, red, blue); } .sample4 { background-image: radial-gradient(farthest-corner, red, blue); }
次にcircle(正円)の場合です。
.sample1 { background-image: radial-gradient(circle closest-side, red, blue); } .sample2 { background-image: radial-gradient(circle closest-corner, red, blue); } .sample3 { background-image: radial-gradient(circle farthest-side, red, blue); } .sample4 { background-image: radial-gradient(circle farthest-corner, red, blue); }
それぞれの値の効果は以下の通りです。
closest-side | 円の中心から最も近い辺に内接する。 |
---|---|
closest-corner | 円の中心から最も近い角に内接する。 |
farthest-side | 円の中心から最も遠い辺に内接する。 |
farthest-corner | 円の中心から最も遠い角に内接する。 |
線形グラデーションの時と同じく、グラデーションを複数指定して重ね合わせることもできます。
<div class="sample sample1">設定1</div> <div class="sample sample2">設定2</div> <div class="sample sample3">設定3</div> <div class="sample sample4">3つの重ね合わせ</div>
.sample1 { background-image: radial-gradient(circle at 50% 0, rgba(255,0,0,.5), rgba(255,0,0,0) 70.71%); } .sample2 { background-image: radial-gradient(circle at 6.7% 75%, rgba(0,0,255,.5), rgba(0,0,255,0) 70.71%); } .sample3 { background-image: radial-gradient(circle at 93.3% 75%, rgba(0,255,0,.5), rgba(0,255,0,0) 70.71%); } .sample4 { background-image: radial-gradient(circle at 50% 0, rgba(255,0,0,.5), rgba(255,0,0,0) 70.71%), radial-gradient(circle at 6.7% 75%, rgba(0,0,255,.5), rgba(0,0,255,0) 70.71%), radial-gradient(circle at 93.3% 75%, rgba(0,255,0,.5), rgba(0,255,0,0) 70.71%); }
扇形グラデーション
次に扇形グラデーションを試してみます。
扇形グラデーションは指定位置の周りを回りながらグラデーションが広がります。
<div class="sample sample-basic"></div>
扇形グラデーションの設定にはconic-gradient()を使います。
.sample-basic { background-image: conic-gradient(red, blue); }
グラデーション開始の角度も指定できます。
<div class="sample sample-0deg">0deg</div> <div class="sample sample-45deg">45deg</div>
fromの後に半角スペースで開けて、単位がdegの数値で指定を行います。
.sample-0deg { background-image: conic-gradient(from 0deg, red, blue); } .sample-45deg { background-image: conic-gradient(from 45deg, red, blue); }
0degの場合は上から始まるグラデーションになり、そこから数値を増やすと時計回りに角度が移動します。
扇形グラデーションのデモページ2
グラデーションの中心位置の変更もできます。
<div class="sample sample-left-bottom">左下を中心</div> <div class="sample sample-right-top">右上を中心</div>
放射グラデーションの時と同じく、atの後に半角スペースで開けて、数値やキーワードでの指定を行います。
.sample-left-bottom { background-image: conic-gradient(at 10% 90%, red, blue); } .sample-right-top { background-image: conic-gradient(from 225deg at right top, red, blue); }
反復グラデーション
最後に今までのグラデーションの繰り返し(反復グラデーション)を試してみます。
まずは線形グラデーションの反復で、repeating-linear-gradient()を使用します。
<div class="sample sample1"></div> <div class="sample sample2"></div> <div class="sample sample3"></div>
linear-gradient()と同じような引数が設定でき、色の後に指定した位置の値を使って反復して要素全体を埋めます。
.sample1 { background-image: repeating-linear-gradient(red, blue 33.3%); } .sample2 { background-image: repeating-linear-gradient(to left top, red, blue 20px); } .sample3 { background-image: repeating-linear-gradient(to left top, black 0px, black 15px, white 15px, white 30px); }
放射グラデーションの反復はrepeating-radial-gradient()を使用します。
<div class="sample sample1"></div> <div class="sample sample2"></div> <div class="sample sample3"></div>
反復線形グラデーションと同じように、pxや%を使った値で指定できます。
.sample1 { background-image: repeating-radial-gradient(red, blue 33.3%); } .sample2 { background-image: repeating-radial-gradient(circle at 0% 100%, red, blue 20px); } .sample3 { background-image: repeating-radial-gradient(circle, black, black 10px, white 10px, white 20px); }
扇形グラデーションの反復はrepeating-conic-gradient()を使用します。
<div class="sample sample1"></div> <div class="sample sample2"></div> <div class="sample sample3"></div>
反復扇形グラデーションの場合はpxを使った指定はできませんが、%やdegを使った指定ができます。
.sample1 { background-image: repeating-conic-gradient(red, blue 33.3%); } .sample2 { background-image: repeating-conic-gradient(from 45deg at 25% 25%, red, blue 20%); } .sample3 { background-image: repeating-conic-gradient(black 0deg 10deg, white 10deg 20deg); }
コメントが承認されるまで時間がかかります。