CSS グラデーションを作る方法

· 5 分で読めます

CSSグラデーションを使うと、画像ファイルなしで滑らかな色の遷移を作成できます。画像より軽く、どんな画面サイズにも完璧にスケールし、カスタマイズも簡単です。装飾的なグラデーションは、同等のJPGやPNGと比べて20から100 KBを節約でき、画質を損なうことなくどんな解像度にもスケールします。

CSSグラデーションの種類

線形グラデーション(linear-gradient): 直線に沿って色が遷移します(上から下、左から右、または任意の角度)。

background: linear-gradient(135deg, #667eea, #764ba2);

放射状グラデーション(radial-gradient): 中心点から円形または楕円形のパターンで色が外側に広がります。

background: radial-gradient(circle, #667eea, #764ba2);

円錐グラデーション(conic-gradient): カラーホイールのように、中心点の周りで色が回転します。

background: conic-gradient(from 0deg, #667eea, #764ba2, #667eea);

ビジュアルにグラデーションを作成する手順

  1. グラデーションの種類を選ぶ: 線形または放射状を選び、角度や位置を設定します。
  2. カラーストップを追加する: クリックしてグラデーション上の異なる位置に色を追加します。各色とその位置を調整します。
  3. CSSをコピー: 生成されたコードをコピーして、スタイルシートに貼り付けます。

ビジュアルジェネレーターを使う方が、特に複数のカラーストップを試しているときには、手書きで構文を書くよりも速いです。

CSSグラデーションの簡単な歴史

CSSグラデーションが存在する前、Webデザイナーはグラデーション効果のために背景画像を使うしかありませんでした。1列のGIFを横方向にタイル状に並べたり、Photoshopの PSDを複数のJPGにスライスしたり。これは機能しましたが、ファイルサイズ、ネットワークリクエスト、ズーム時のピクセル化を増やしました。

WebKitは2009年6月のSafari 4で最初の-webkit-gradient()実装を、冗長で読みにくい構文として追加しました。Firefox 3.6(2010年1月)は-moz-linear-gradient()で続きました。CSS Working Groupは2012年のCSS Image Values Level 3でプレフィックスなしのlinear-gradient()radial-gradient()を標準化し、その時点でブラウザのプレフィックスは消え始めました。

円錐グラデーション(conic-gradient())はずっと後にやってきました。最初にChrome 69(2018年9月)で出荷され、Safari 12.1(2019年3月)までにすべての主要ブラウザに到達しました。これにより、それまでは画像なしでは不可能だった視覚パターン(円グラフ、カラーホイール、市松模様、サンバーストパターン)が実現可能になりました。

CSSグラデーションは現在、ベースラインのブラウザ機能と見なされています。あなたが欲しいほぼどんなグラデーション効果も、画像やJavaScriptなしにCSSで実現可能です。

よく使われるグラデーションパターン

ヒーローセクションの背景: 2色の控えめなグラデーションは、テキストを邪魔せずに奥行きを加えます。

background: linear-gradient(135deg, #0f172a, #1e3a5f);

ボタンのハイライト: わずかなグラデーションでボタンが立体的に感じられます。

background: linear-gradient(180deg, #3b82f6, #2563eb);

画像へのオーバーレイ: グラデーションのオーバーレイは、写真上のテキストの可読性を向上させます。

background: linear-gradient(to bottom, transparent, rgba(0,0,0,0.7));

アクセントボーダー: 視覚的な面白さのために、グラデーションをボーダーとして使います。

border-image: linear-gradient(90deg, #667eea, #764ba2) 1;

アニメーションメッシュグラデーション: 複数の放射状グラデーションを重ね、位置をアニメーションさせます。

background:
  radial-gradient(at 20% 30%, #667eea 0%, transparent 50%),
  radial-gradient(at 80% 70%, #764ba2 0%, transparent 50%),
  #0f172a;

グラスモーフィズムの背景: 低不透明度のグラデーションをbackdrop-filterのblurと組み合わせます。

background: linear-gradient(135deg, rgba(255,255,255,0.1), rgba(255,255,255,0.05));
backdrop-filter: blur(10px);

カラーストップの位置指定

デフォルトでは、カラーストップは均等に配置されます。各色が現れる場所を制御するために、位置を上書きできます:

/* 中央60%が黄色、端は赤にフェード */
background: linear-gradient(90deg, red 0%, yellow 20%, yellow 80%, red 100%);

ハードストップを使って、アンチエイリアスなしでストライプや幾何学的パターンを作ることもできます:

/* 遷移なしの2色ストライプ */
background: linear-gradient(45deg, #667eea 50%, #764ba2 50%);

コツは、2つのカラーストップを同じ位置に置くことです。ブラウザはそれらの間を補間しないため、鋭いエッジが生まれます。

グラデーション、単色、画像の使い分け

よくあるパターンは、3つすべてを重ねることです。単色のベース、CSSグラデーションのオーバーレイ、その上に低不透明度のテクスチャ画像。

よくある落とし穴

使いこなしのヒント

プライバシー

CSSグラデーションジェネレーターは完全にブラウザ内で動作します。選んだ色、試したグラデーション設定、生成したCSSはすべてデバイス上に留まります。テレメトリも、利用追跡も、デザイン選択のアップロードもありません。デザイン探索中に使うツールにとってはこれが重要です。試している色やパターンが、未公開のブランド方針、未発表の製品テーマ、NDA下のクライアントワークを露呈する可能性があるからです。ブラウザ専用の生成は、それらすべてをあなたのマシン上に保ちます。

よくある質問

CSS グラデーションはすべてのブラウザで動作しますか?

はい。線形と放射状のグラデーションは Chrome、Firefox、Safari、Edge を含むすべての最新ブラウザでサポートされています。円錐状グラデーションは比較的新しいですが、現行バージョンならどれでも動作します。

色を 2 つより多く使えますか?

はい。CSS グラデーションは好きなだけカラーストップを受け付けます。各ストップで色とグラデーション上の位置を定義できます。

グラデーションはパフォーマンスに影響しますか?

いいえ。CSS グラデーションはブラウザでレンダリングされ、画像ファイルよりはるかに軽量です。追加のダウンロードなしに任意の画面サイズへ完璧にスケールします。

グラデーションをアニメーションできますか?

background プロパティ自体への CSS トランジションでは直接動かせませんが、background-position をアニメーションするか、@property と CSS カスタムプロパティを使うことで滑らかなグラデーションアニメーションを作れます。