Menu

CSS グラデーションの使い方: radial、linear、conic

CSS のグラデーションは、ブラウザが色から描く画像です。radial-gradient (形、サイズ、位置)、linear-gradient (方向と角度)、conic-gradient、カラーストップ、ストライプを作るくっきりした境目、繰り返しグラデーション、グラデーション文字を解説します。

このページのコードはエディタで実行できます - 編集してすぐに結果を確認できます。

円形グラデーション (radial-gradient)

radial-gradient() は、中心点から外側に向かって色を混ぜます。CSS のグラデーションはすべて画像なので、background-image (または background のショートハンド) に書きます:

完全な構文は radial-gradient(shape size at position, color stops) です。色より前の部分はすべて省略できます。

部分値初期値
形circle、ellipseellipse
サイズclosest-side、closest-corner、farthest-side、farthest-corner、または長さfarthest-corner
位置at center、at top left、at 30% 70%、at 20px 40pxat center
カラーストップ2 つ以上の色。それぞれ位置を付けられる

サイズのキーワードは、最後の色がどこで届くかを決めます。ボックスの一番近い辺、一番遠い角、といった具合です。ここで値を変えると、グラデーションが描き直されます:

circle farthest-corner at 30% 50%, #f59e0b, #2563eb、ellipse at bottom, white, #16a34a、circle 40px, #f59e0b 99%, transparent (縁がくっきりした点) を試してみてください。

線形グラデーション (linear-gradient)

linear-gradient() は直線に沿って色を混ぜます。最初に方向か角度を書き、その後に色を書きます:

角度は 0deg が上向きで、時計回りに進みます。つまり 90deg は to right、180deg は初期値の to bottom です。to right は右から左に書くページでも物理的な向きのままです。読む方向に合わせたいときは、自分で反転させてください。

カラーストップとくっきりした境目

色にはそれぞれ位置を付けられます。位置がなければ、色は均等に並びます。2 つの色が同じ位置を持つと、色が一瞬で切り替わります。ストライプ、旗、プログレスバーはこうして描きます:

ストップには #111827 12px 24px のように 2 つの位置も指定でき、12px から 24px まで単色の帯を描きます。

扇形グラデーション (conic-gradient)

conic-gradient() は、時計の針のように中心点の周りに色を回します。くっきりした境目と組み合わせると、画像も JavaScript も使わずに円グラフが描けます:

CSS で描いたグラフはスクリーンリーダーには見えないので、数値はテキストでも書いておきましょう。

グラデーション文字

グラデーションの背景を文字の形で切り抜き、文字自体を透明にします:

.gradient-text {
  background: linear-gradient(90deg, #2563eb, #db2777);
  -webkit-background-clip: text; /* older browsers need the prefix */
  background-clip: text;
  color: transparent;
}

通常の color の代わりを意識しておきましょう。切り抜きが効かないと、文字が消えてしまいます。グラデーション文字はコントラストもまちまちなので、大きな見出しだけに使います。

グラデーションは、画像やほかのグラデーションと 1 つの background-image のリストに重ねられます。レイヤー、サイズ、位置は 背景画像のページ で解説しています。

よくある間違い

  • background-color: linear-gradient(...)。 グラデーションは画像です。background-image か background を使います。
  • 角度の向きの勘違い。 0deg は右ではなく上向きです。90deg が右向きです。
  • 高さのない要素にグラデーションを付ける。 何も表示されません。内容かサイズを与えてください。
  • 中間の色がにごる。 赤と緑のような鮮やかな反対色を混ぜると、sRGB では灰色がかった茶色を通ります。中間のストップを足すか、別の色空間で混ぜます: linear-gradient(in oklch, red, green)。
  • 大きく淡いグラデーションの色の段差 (バンディング)。 近い色を広い面積で混ぜると段差が見えます。ストップ同士の差を少し大きくすると改善します。

よくある質問

CSS で円形のグラデーションを作るには?

background-image: radial-gradient(#93c5fd, #1e3a8a); を使います。radial-gradient(circle at top left, #93c5fd, #1e3a8a) のように、色の前に形と位置を書けます。

radial-gradient の circle と ellipse の違いは何ですか?

ellipse (初期値) はボックスの縦横比に合わせて伸びるので、横長のボックスでは横長になります。circle はボックスの形に関係なく、グラデーションを丸く保ちます。

線形グラデーションの向きを指定するには?

方向か角度を最初に書きます: linear-gradient(to right, red, blue) または linear-gradient(45deg, red, blue)。初期値は to bottom (180deg) です。0deg は上向きで、角度は時計回りに進みます。

なめらかに混ぜずに、くっきりしたストライプにするには?

2 つの色に同じ位置を指定します: linear-gradient(90deg, #2563eb 50%, #f59e0b 50%) は中央で混ざらずに色が切り替わります。repeating-linear-gradient はそのパターンを繰り返します。

グラデーションを background-color に指定できますか?

できません。グラデーションは画像なので、background-image か background のショートハンドに書きます。background-color: linear-gradient(...) は無効で、無視されます。

Coddy programming languages illustration

Coddyでコードを学ぼう

始める