2018年9月にリリースされたGoogle Chrome 69で、CSSの新しいグラデーション手法conic-gradient()
関数がサポートされました。conic
(円錐)の名のとおり、円錐状にグラデーションを描画するものです。conic-gradient()
関数を使用すると、円錐状のグラデーションはもちろん、集中線や市松模様といった表現が手軽に実装できます。
▼ conic-gradient()
関数で実装したグラデーション例

▼ conic-gradient()
関数で実装した演出例
本記事ではconic-gradient()
関数の基本的な使い方を解説しつつ、応用的な表現やクロスブラウザ対応の方法を紹介します。
conic-gradient()関数の基礎
linear-gradient()関数・radial-gradient()関数との比較
CSSでグラデーションを実現する手段は次の 2 つがありました。
-
linear-gradient()
関数: 直線状のグラデーション -
radial-gradient()
関数: 放射状のグラデーション
本記事で紹介するconic-gradient()
関数は、円錐状のグラデーションです。グラデーションに関する3つのCSSの違いを、コードを通して確認しましょう。
▼ linear-gradient()
関数
background-image : linear-gradient( |
▼ radial-gradient()
関数
background-image : radial-gradient(hsl( 177 , 100% , 50% ), hsl( 232 , 100% , 50% )); |
▼ conic-gradient()
関数
background-image : conic-gradient(hsl( 177 , 100% , 50% ), hsl( 232 , 100% , 50% )); |
conic-gradient()関数の基本的な書き方
conic-gradient()
関数のコードの基本的な書き方を紹介します。前述のコードでは、次のように始点と終点のみを指定しました。
background-image : conic-gradient(hsl( 177 , 100% , 50% ), hsl( 232 , 100% , 50% )); |
他のグラデーションと同じく、カラーストップ(途中の色)は複数指定可能です。追加でカラーストップの位置を指定でき、deg
(角度)、%
(割合)、turn
(回転数)等の単位が使えます。
background-image : conic-gradient( |
hsl( 90 , 100% , 50% ) 90 deg, |
hsl( 180 , 100% , 50% ) 180 deg, |
hsl( 270 , 100% , 50% ) 270 deg, |
hsl( 360 , 100% , 50% ) 360 deg |
▼ 実行結果
conic-gradient()
関数の第一引数はグラデーションの開始位置や中心点の位置を指定可能です。
background-image : conic-gradient(at 100px 100px , blue , red ); |
background-image : conic-gradient(from 30 deg, blue , red ); |
繰り返しのためのrepeating-linear-gradient()関数
線形グラデーションには繰り返しのためのrepeating-linear-gradient()
関数、放射状グラデーションには繰り返しのためのrepeating-radial-gradient()
関数があります。同様に円錐状のグラデーションには繰り返しのためのrepeating-conical-gradient()
関数があります。
水色・青色・水色のconic-gradient()
関数を繰り返して表示するサンプルを通して、使い方を紹介します。
background-image : repeating-conic-gradient( |
▼ 実行結果
この後は、conic-gradient()
関数を用いてどのような表現ができるのかを紹介します。
円グラフ表現
次のサンプルは、ウェブページ内で円グラフを表示したいときに使える表現です。
ポイントはカラーストップの記述部分です。0%〜65%が赤色(#f11a50
)、65%〜90%が緑色(#7cef00
)、それ以外が水色(#00dbd9
)となり、円グラフのような表現を可能にしています。
background-image : conic-gradient( |
※ 中心をくり抜いているのはmask-image
プロパティーによるものです。後述のコラムを参照ください。
市松模様
次のサンプルは、二色の正方形を交互に配置する市松模様で使える表現です。
repeating-conic-gradient()
関数でカラーストップの位置を 0%、25%、50%に設定すると、市松模様となります。background-size
で好きなサイズを設定して使います。
background-image : repeating-conic-gradient( |
background- size : 20px 20px ; |
background-position : center center ; |
集中線表現
次のサンプルは、ゲーム演出や漫画の一コマのような演出で使える集中線の表現です。
集中線の太さにランダム性をもたせるためにrepeating-conic-gradient()
関数を重ねています。ボーダーの色は変更しやすいようCSS変数を用いています。
background-color : #ffee33 ; |
repeating-conic-gradient( |
var(--border-color) 13 deg, |
var(--border-color) 16 deg |
repeating-conic-gradient( |
var(--border-color) 20 deg, |
var(--border-color) 23 deg |
repeating-conic-gradient( |
var(--border-color) 5 deg, |
repeating-conic-gradient( |
var(--border-color) 2 deg, |
また、集中線が楕円ではなく正円上に広がるよう、次の工夫を行っています。
- ブラウザサイズが横長のときはエフェクトの幅を
100vw
- ブラウザサイズが縦長のときはエフェクトの幅を
100vh
- エフェクトの中心点とブラウザの中心点をあわせて配置
@media (orientation: portrait ) { |
--half-circle- width : calc(var(--circle-width) / 2 ); |
width : var(--circle-width); |
height : var(--circle-width); |
left : calc( 50% - var(--half-circle-width)); |
top : calc( 50% - var(--half-circle-width)); |
コラム: 中心のくり抜きはmask-imageプロパティー
円グラフ表現や集中線表現ではに中心をくり抜いていますが、これはmask-image
プロパティーを用いています。mask-image
プロパティーは指定した画像の形状でマスクをかけられるプロパティーで、今回はradial-gradient
を次のように記述しています。
-webkit-mask-image: radial-gradient( |
次のページでは、クロスブラウザの対応方法とconic-gradient()
関数のユニークな作例を紹介します。