9/7まで 最大30%OFF 初心者編|無料コーディング教材|HTML・CSS・jQueryを実践で学ぶ

CSS linear-gradientの使い方|方向・色・背景グラデーションを初心者向けに解説

CSSのlinear-gradientで色の変化と方向を設定するイメージ

CSSで背景をなめらかに色変化させたいときは、linear-gradient()を使います。

画像編集ソフトを使わなくても、2色以上の色、向き、色が切り替わる位置をCSSだけで指定できます。この記事では、初めて使う方がそのまま試せるコードから、背景画像への重ね方や文字のグラデーションまで順番に解説します。

linear-gradientとは直線状のグラデーションを作るCSS関数

linear-gradient()は、2色以上の色を直線に沿って変化させ、グラデーション画像を作るCSS関数です。「linear」は直線、「gradient」は色の連続的な変化を意味します。

生成結果は単なる色ではなくCSSの画像として扱われるため、通常はbackgroundまたはbackground-imageプロパティに指定します。拡大しても荒れにくく、要素のサイズに合わせて自動で描画される点が特徴です。

.gradient-box {
  background: linear-gradient(#38bdf8, #a855f7);
}

この例では、上の水色から下の紫色へなめらかに変化します。方向を省略した場合は、上から下が初期値です。

linear-gradientの基本を実際に試す

ここでは、HTMLで箱を1つ用意し、その背景をCSSでグラデーションにします。「変更前の状態→追加するCSS→変更後の状態」の順で見ていきましょう。

HTMLで表示する箱を作る

まず、gradient-boxというクラス名を付けたdiv要素を作ります。中の文章は、グラデーションの上に文字が表示されることを確認するためのものです。

<div class="gradient-box">
  linear-gradientの練習
</div>

変更前は単色の背景にする

最初はbackground-colorで水色だけを指定します。幅や余白も加えて、変化を確認しやすくしておきます。

.gradient-box {
  max-width: 640px;
  padding: 80px 24px;
  border-radius: 16px;
  background-color: #38bdf8;
  color: #ffffff;
  font-size: 24px;
  font-weight: 700;
  text-align: center;
}

背景を2色のグラデーションに変更する

background-colorを削除し、代わりにbackground: linear-gradient()を追加します。丸括弧の中へ、開始色と終了色を半角カンマで区切って書いてください。

.gradient-box {
  max-width: 640px;
  padding: 80px 24px;
  border-radius: 16px;
  background: linear-gradient(#38bdf8, #a855f7);
  color: #ffffff;
  font-size: 24px;
  font-weight: 700;
  text-align: center;
}

ブラウザを更新すると、水色から紫色へ変化する背景になります。基本形はlinear-gradient(開始色, 終了色)と覚えると分かりやすいです。

グラデーションの方向を指定する

方向は、to rightのようなキーワード、または45degのような角度で指定できます。方向は色より前に書き、半角カンマで区切ります。

linear-gradientの上下・左右・斜め方向を矢印で比較した図
方向の指定によって、同じ2色でも見え方が変わります。

左右や斜めの方向をキーワードで指定する

左から右へ変化させる場合はto rightを使います。toの後ろは「グラデーションが進む方向」です。

.gradient-box {
  background: linear-gradient(to right, #38bdf8, #a855f7);
}

右下へ進めたい場合は、横と縦の方向を組み合わせてto right bottomと書きます。

.gradient-box {
  background: linear-gradient(to right bottom, #38bdf8, #a855f7);
}

細かな向きはdegで指定する

degはdegree(度)の略です。0degは下から上、90degは左から右、180degは上から下へ変化します。

.gradient-box {
  background: linear-gradient(135deg, #38bdf8, #a855f7);
}

角度は時計回りに増えます。デザインを見ながら少しずつ数値を変えると、目的の向きを見つけやすいでしょう。

色の数と変化する位置を指定する

linear-gradient()には3色以上も指定できます。それぞれの色は「カラーストップ(色経由点)」と呼ばれ、何%の位置でその色になるかも決められます。

linear-gradientの2色、3色、境界を付けたカラーストップの比較図
カラーストップの数と位置を変えると、滑らかな変化と明確な境界の両方を作れます。

3色以上を使う

色を3つ指定すると、指定した順番で均等に配置されます。次の例は、水色、紫色、ピンクの順に変化します。

.gradient-box {
  background: linear-gradient(
    to right,
    #38bdf8,
    #a855f7,
    #ec4899
  );
}

パーセントで色の位置を決める

色の直後に30%のような位置を書くと、その場所で指定色になるように変化します。パーセントは色の量そのものではなく、要素内の位置を示す値です。

.gradient-box {
  background: linear-gradient(
    to right,
    #38bdf8 0%,
    #a855f7 35%,
    #ec4899 100%
  );
}

この指定では、紫色が中央の50%ではなく35%の位置に来ます。そのため、紫からピンクへ変わる範囲が広くなります。

同じ位置を指定して境界をはっきりさせる

2つの色へ同じ位置を指定すると、なめらかに混ざらず、色がその位置で切り替わります。ストライプや背景の塗り分けに使える方法です。

.gradient-box {
  background: linear-gradient(
    to right,
    #38bdf8 0% 50%,
    #ec4899 50% 100%
  );
}

linear-gradientの実用的な使い方

基本構文を理解したら、Webサイトでよく使う背景、ボタン、画像への重ね合わせ、文字のグラデーションを試してみましょう。

ボタンの背景に使う

ボタンに使う場合は、文字とのコントラストを確保することが大切です。背景が明るいなら暗い文字、濃い背景なら白い文字を選びます。

<a class="gradient-button" href="#">詳しく見る</a>
.gradient-button {
  display: inline-block;
  padding: 14px 28px;
  border-radius: 9999px;
  background: linear-gradient(90deg, #2563eb, #9333ea);
  color: #ffffff;
  font-weight: 700;
  text-decoration: none;
}

背景画像に半透明のグラデーションを重ねる

背景はカンマ区切りで複数重ねられます。先に書いた画像が手前になるため、半透明のグラデーションを先、写真を後に指定します。

.hero {
  min-height: 420px;
  background:
    linear-gradient(
      90deg,
      rgb(15 23 42 / 0.9),
      rgb(15 23 42 / 0.2)
    ),
    url("hero.jpg") center / cover;
}

rgb(15 23 42 / 0.9)の最後の値は不透明度です。0に近いほど透明になり、1に近いほど色が濃くなります。写真の上に白い文字を置くときも、背景との境界を作りやすくなります。

文字をグラデーションにする

文字の形に背景を切り抜くと、文字自体がグラデーションしているように見せられます。読みやすさを保つため、見出しなど短い文字へ使うのがおすすめです。

.gradient-text {
  background: linear-gradient(90deg, #0284c7, #9333ea, #db2777);
  background-clip: text;
  color: transparent;
}

background-clip: textは、背景を文字の形に合わせて切り抜く指定です。color: transparentで通常の文字色を透明にすると、切り抜いた背景が見えるようになります。

linear-gradientが表示されないときの確認ポイント

色を2つ以上指定しているか確認する

グラデーションには少なくとも2つのカラーストップが必要です。色は半角カンマで区切り、丸括弧を閉じているかも確認してください。

background-colorではなくbackgroundに指定する

linear-gradient()の結果は画像なので、background-colorには指定できません。backgroundまたはbackground-imageを使います。

/* 表示されない書き方 */
.box {
  background-color: linear-gradient(#38bdf8, #a855f7);
}

/* 表示される書き方 */
.box {
  background-image: linear-gradient(#38bdf8, #a855f7);
}

要素に幅や高さがあるか確認する

中身が空で、幅や高さもない要素は画面上に表示されません。テスト時はmin-heightpaddingを指定し、背景を描画する範囲を作りましょう。

後から書いたbackgroundで上書きしていないか確認する

backgroundは背景画像や背景色などをまとめて指定するショートハンドプロパティです。後の行で別のbackgroundを書くと、先に指定したグラデーションが上書きされることがあります。

linear-gradientでよくある疑問

linear gradientとlinear-gradientは違いますか?

検索キーワードでは「linear gradient」と空白を入れて書くことがありますが、CSSの関数名はハイフンを入れたlinear-gradient()です。コードでは空白に置き換えないでください。

backgroundとbackground-imageのどちらを使いますか?

グラデーションだけを指定するなら、どちらでも表示できます。背景のほかの設定を残したい場合はbackground-image、位置やサイズなどもまとめて指定する場合はbackgroundが分かりやすいです。

円形や扇形のグラデーションも作れますか?

円の中心から広がる形はradial-gradient()、円周に沿って回転する形はconic-gradient()で作れます。直線状に色を変える場合はlinear-gradient()を選びます。

まとめ

linear-gradient()を使うと、画像を用意せずに直線状のグラデーションを作れます。まずはlinear-gradient(開始色, 終了色)の基本形を試してください。

慣れてきたら、to rightdegで方向を変え、パーセントでカラーストップの位置を調整します。背景画像への重ね合わせでは、文字が読みやすいかも一緒に確認しましょう。