「単色の背景だと少し味気ない…」
「オシャレなグラデーションを使ってみたい!」
Webページをもっときれいに見せたいときに便利なのが**グラデーション(Gradation)**です。グラデーションを使うと、ただの色よりも立体感や高級感が出て、訪れた人の印象がぐっと良くなります。
この記事では、HTMLとCSSを使って簡単にグラデーションを作る方法を、初心者にもわかりやすく解説します。
そもそもグラデーションとは?

グラデーションの意味
グラデーション(gradation)は、色が段階的に変化する表現のことです:
- 青から白にだんだん変わる
- 3色以上を滑らかにつなぐ
- 放射状(丸く広がる)に色が変わる
など、いろいろな表現ができます。
CSSで使う仕組み
HTML自体には色をつける仕組みはありません。<div>
や<section>
などに**CSS(スタイルシート)**を使って色やグラデーションを指定します。
<!DOCTYPE html>
<html>
<head>
<style>
/* ここにグラデーションのCSSを書きます */
</style>
</head>
<body>
<div class="gradient-box">グラデーション要素</div>
</body>
</html>
基本:線形グラデーション(linear-gradient)
2色で横にグラデーション
<div class="gradient-box-horizontal"></div>
.gradient-box-horizontal {
width: 300px;
height: 100px;
background: linear-gradient(to right, #4facfe, #00f2fe);
}
linear-gradient
は「直線的に色を変える」to right
は左から右へ色が変化する指示
上下にグラデーション
.gradient-box-vertical {
background: linear-gradient(to bottom, #ff9a9e, #fad0c4);
}
これで上から下へ色が変わります。
斜めのグラデーション
/* 左上から右下へ */
.gradient-diagonal {
background: linear-gradient(45deg, #667eea, #764ba2);
}
/* 右上から左下へ */
.gradient-diagonal-reverse {
background: linear-gradient(135deg, #f093fb, #f5576c);
}
角度を指定したグラデーション
/* 0度は下から上(to top) */
.gradient-0deg {
background: linear-gradient(0deg, #ff6b6b, #4ecdc4);
}
/* 90度は左から右(to right) */
.gradient-90deg {
background: linear-gradient(90deg, #a8edea, #fed6e3);
}
/* 180度は上から下(to bottom) */
.gradient-180deg {
background: linear-gradient(180deg, #ffecd2, #fcb69f);
}
複数色を使う
/* 3色のグラデーション */
.gradient-three-colors {
background: linear-gradient(to right, #ff9a9e, #fad0c4, #fbc2eb);
}
/* 4色のレインボー風 */
.gradient-rainbow {
background: linear-gradient(to right, #ff6b6b, #4ecdc4, #45b7d1, #96ceb4);
}
/* パステルカラーの5色 */
.gradient-pastel {
background: linear-gradient(
to right,
#ffeaa7, #fab1a0, #fd79a8, #fdcb6e, #6c5ce7
);
}
色の境界位置を指定
/* 最初の50%は青、残り50%で白に変化 */
.gradient-custom-stop {
background: linear-gradient(to right, #3498db 50%, #ffffff 100%);
}
/* 複数の境界点を指定 */
.gradient-multiple-stops {
background: linear-gradient(
to right,
#e74c3c 0%,
#f39c12 25%,
#f1c40f 50%,
#27ae60 75%,
#3498db 100%
);
}
放射状グラデーション(radial-gradient)

真ん中から丸く広がる
.gradient-radial-basic {
background: radial-gradient(circle, #ffecd2, #fcb69f);
}
radial-gradient
は「円形に色が広がる」circle
は形を指定(デフォルトでellipse
= 楕円)
楕円形のグラデーション
.gradient-radial-ellipse {
background: radial-gradient(ellipse, #667eea, #764ba2);
}
中心をずらすことも可能
/* 左上寄りに中心を配置 */
.gradient-radial-positioned {
background: radial-gradient(circle at 30% 30%, #ffecd2, #fcb69f);
}
/* 右下に中心を配置 */
.gradient-radial-bottom-right {
background: radial-gradient(circle at 80% 80%, #a8edea, #fed6e3);
}
/* 上部中央に配置 */
.gradient-radial-top-center {
background: radial-gradient(circle at 50% 20%, #ff9a9e, #fad0c4);
}
サイズを指定したグラデーション
/* 最も近い角まで */
.gradient-radial-closest-corner {
background: radial-gradient(circle closest-corner at 50% 50%, #ff6b6b, #4ecdc4);
}
/* 最も遠い角まで */
.gradient-radial-farthest-corner {
background: radial-gradient(circle farthest-corner at 30% 30%, #667eea, #764ba2);
}
/* ピクセル単位でサイズ指定 */
.gradient-radial-sized {
background: radial-gradient(150px circle at center, #ffeaa7, #fab1a0);
}
テキストにグラデーション
基本的なテキストグラデーション
<h1 class="gradient-text">Hello Gradation</h1>
.gradient-text {
font-size: 48px;
font-weight: bold;
background: linear-gradient(to right, #30cfd0, #330867);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
}
アニメーションするテキストグラデーション
.gradient-text-animated {
font-size: 48px;
font-weight: bold;
background: linear-gradient(45deg, #ff6b6b, #4ecdc4, #45b7d1, #96ceb4);
background-size: 400% 400%;
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
animation: gradientShift 3s ease infinite;
}
@keyframes gradientShift {
0% { background-position: 0% 50%; }
50% { background-position: 100% 50%; }
100% { background-position: 0% 50%; }
}
縦方向のテキストグラデーション
.gradient-text-vertical {
font-size: 48px;
background: linear-gradient(to bottom, #ff9a9e, #fad0c4, #fbc2eb);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
}
実用的なデザインパターン
ヒーローセクション用グラデーション
.hero-gradient {
height: 100vh;
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
display: flex;
align-items: center;
justify-content: center;
color: white;
}
カード要素のグラデーション
.card-gradient {
background: linear-gradient(145deg, #ffffff, #f0f0f0);
border-radius: 15px;
padding: 20px;
box-shadow: 0 10px 20px rgba(0,0,0,0.1);
}
ボタンのグラデーション
.button-gradient {
background: linear-gradient(45deg, #ff6b6b, #4ecdc4);
border: none;
color: white;
padding: 12px 24px;
border-radius: 25px;
cursor: pointer;
transition: transform 0.2s;
}
.button-gradient:hover {
transform: translateY(-2px);
box-shadow: 0 5px 15px rgba(0,0,0,0.2);
}
ナビゲーションバーのグラデーション
.navbar-gradient {
background: linear-gradient(90deg, #667eea, #764ba2);
padding: 15px 0;
position: sticky;
top: 0;
z-index: 100;
}
高度なグラデーション技術
複数のグラデーションを重ねる
.multi-gradient {
background:
linear-gradient(45deg, rgba(255, 0, 0, 0.3) 0%, transparent 70%),
linear-gradient(135deg, rgba(0, 255, 0, 0.3) 10%, transparent 80%),
linear-gradient(225deg, rgba(0, 0, 255, 0.3) 10%, transparent 80%),
linear-gradient(315deg, rgba(255, 255, 0, 0.3) 10%, transparent 80%);
}
グラデーションボーダー
.gradient-border {
background: linear-gradient(white, white) padding-box,
linear-gradient(45deg, #ff6b6b, #4ecdc4) border-box;
border: 3px solid transparent;
border-radius: 10px;
padding: 20px;
}
アニメーションするグラデーション背景
.animated-gradient {
background: linear-gradient(45deg, #ff6b6b, #4ecdc4, #45b7d1, #96ceb4);
background-size: 400% 400%;
animation: gradientAnimation 8s ease infinite;
}
@keyframes gradientAnimation {
0% { background-position: 0% 50%; }
25% { background-position: 100% 50%; }
50% { background-position: 100% 100%; }
75% { background-position: 0% 100%; }
100% { background-position: 0% 50%; }
}
コニカルグラデーション(conic-gradient)

基本的なコニカルグラデーション
.conic-gradient-basic {
background: conic-gradient(#ff6b6b, #4ecdc4, #45b7d1, #ff6b6b);
border-radius: 50%;
width: 200px;
height: 200px;
}
円グラフ風デザイン
.pie-chart {
background: conic-gradient(
#ff6b6b 0deg 90deg,
#4ecdc4 90deg 180deg,
#45b7d1 180deg 270deg,
#96ceb4 270deg 360deg
);
border-radius: 50%;
width: 150px;
height: 150px;
}
ブラウザ対応とフォールバック
古いブラウザ対応
.gradient-with-fallback {
/* フォールバック用の単色 */
background-color: #4facfe;
/* グラデーション */
background: linear-gradient(to right, #4facfe, #00f2fe);
}
ベンダープレフィックス
.gradient-cross-browser {
background: -webkit-linear-gradient(left, #4facfe, #00f2fe); /* Safari 5.1-6 */
background: -o-linear-gradient(left, #4facfe, #00f2fe); /* Opera 11.1-12 */
background: -moz-linear-gradient(left, #4facfe, #00f2fe); /* Firefox 3.6-15 */
background: linear-gradient(to right, #4facfe, #00f2fe); /* 標準 */
}
よくある問題と解決法
グラデーションが表示されない
原因と対処法
- タイプミス:
linear-gradient
のスペルチェック - カラーコードの間違い:正しい16進数カラーコードを使用
- ブラウザ対応:古いブラウザではベンダープレフィックスが必要
/* 正しい書き方 */
.correct-gradient {
background: linear-gradient(to right, #ff0000, #00ff00);
}
/* よくある間違い */
.wrong-gradient {
background: linear-gradiant(to right, #ff0000, #00ff00); /* スペルミス */
}
色が急に変わってしまう
解決法:色の境界位置を調整
/* 急な変化 */
.harsh-transition {
background: linear-gradient(to right, #ff0000 50%, #00ff00 50%);
}
/* なめらかな変化 */
.smooth-transition {
background: linear-gradient(to right, #ff0000 0%, #00ff00 100%);
}
テキストグラデーションが効かない
Webkit系ブラウザでの対処
.text-gradient-fix {
background: linear-gradient(to right, #ff6b6b, #4ecdc4);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text; /* 標準プロパティも追加 */
}
グラデーションジェネレータツール
おすすめのツール
- CSS Gradient Generator
- 視覚的にグラデーションを作成
- コードを自動生成
- WebKit Gradient Generator
- Webkit系ブラウザ対応
- Ultimate CSS Gradient Generator
- 高度なオプションが豊富
カラーパレットサイト
- Coolors.co:配色の組み合わせ
- Adobe Color:プロ向けカラーパレット
- Gradient Hunt:美しいグラデーション集
パフォーマンスの最適化
最適化のポイント
- 必要以上に複雑にしない
- アニメーションは控えめに
- 適切なフォールバックを用意
/* パフォーマンスを考慮した例 */
.optimized-gradient {
background-color: #4facfe; /* フォールバック */
background-image: linear-gradient(to right, #4facfe, #00f2fe);
will-change: transform; /* アニメーション時のみ */
}
まとめ
基本のポイント
- グラデーションは
linear-gradient
(直線)とradial-gradient
(放射状)が基本 to right
やcircle at 30% 30%
で方向や位置を調整- テキストに使うと個性的な見出しが作れる
- 複数色を使って豊かな表現が可能
実用的な活用法
- ヒーローセクション:印象的なファーストビュー
- ボタンデザイン:クリックしたくなる魅力的なボタン
- カード要素:立体感のあるコンテンツボックス
- テキスト装飾:目を引く見出しやロゴ
コメント