CSSでテキストにグラデーションを設定する方法をメモ。
対応ブラウザ
テキストのグラデーションには、背景にグラデーションを設定する「background: linear-gradient()」、背景をテキスト内に切り取って表示する「background-clip: text」、テキストの塗りの色を透明にする「text-fill-color: transparent」を使用します。
「background: linear-gradient()」の対応ブラウザは、最新のブラウザであれば概ね対応しています。
「background-clip」の場合、Firefox、ChromeとSafariでは「-webkit-background-clip: text」の形でサポートしているようです。
「text-fill-color」の場合はIEに対応していないため、別途対応が必要になります。
設定方法
縦方向と横方向のグラデーションを設定してみます。
<p class="gradation-text-h">縦方向のグラデーション</p> <p class="gradation-text-w">横方向のグラデーション</p>
横方向の場合は要素の幅分だけグラデーションが広がってしまうので、display:inline-block を使って幅をテキストと同じになるようにします。
.gradation-text-h {
background: linear-gradient(0deg, red, blue);
-webkit-background-clip: text;
background-clip: text;
-webkit-text-fill-color: transparent;
}
.gradation-text-w {
display: inline-block;
background: linear-gradient(90deg, red, blue);
-webkit-background-clip: text;
background-clip: text;
-webkit-text-fill-color: transparent;
}
これでテキストにグラデーションを設定することができました。
テキストにグラデーションを設定するデモページ
IEの対応
IEでは対応していないため、グラデーションではなくベタ塗りの文字を表示するようにしてみます。
.gradation-text-h {
background: linear-gradient(0deg, red, blue);
-webkit-background-clip: text;
background-clip: text;
-webkit-text-fill-color: transparent;
}
@media all and (-ms-high-contrast: none) { /* IE10,11用 */
.gradation-text-h {
background: none;
color: red;
}
}
.gradation-text-w {
display: inline-block;
background: linear-gradient(90deg, red, blue);
-webkit-background-clip: text;
background-clip: text;
-webkit-text-fill-color: transparent;
}
@media all and (-ms-high-contrast: none) { /* IE10,11用 */
.gradation-text-w {
background: none;
color: red;
}
}
@media all and (-ms-high-contrast: none) { ~ }でIE10以上にCSSを適用させています。
IEでべた塗りにするデモページ
【参考サイト】
コメントが承認されるまで時間がかかります。