どうも上かるびです。
CSSで文字を”横方向に”グラデーションさせようと思ったときに気を付けることがありますので、ご紹介します。
Contents
横方向のグラデーションはコピペでは上手くいかない
「文字 CSS グラデーション」などでググって出てくる記事のほとんどで、下記のような実装方法が紹介されているかと思います。
1 2 3 4 5 6 |
h1{ color: #333;//for IE background: linear-gradient(〇〇deg, #ff1100, #ff2200 50%, #ff3300); -webkit-background-clip: text; -webkit-text-fill-color: rgba(255,255,255,0.0); } |
ただですね!↓の画像のような横方向にグラデーションさせたい場合は↑をコピペしてカラーコードを変えただけでは上手くいきません。
実際にCSSグラデーションのサイトを使って実装してみた結果が↓こちらです。(h1のフォントサイズはデフォルトの32px)
見ての通り、グラデーションが上手く効いてません。
さあなぜでしょうか?(30秒お考えください。)
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
はい、正解です!h1はブロック要素のため、横幅いっぱいに広がってるからなんですね。
横方向でもきれいにグラデーションさせる方法
簡単な方法を2つご紹介します。
display:inline-block;をつける
幅を横いっぱいではなくも文字幅にすればその間でグラデーションが構成されます。
1 2 3 4 5 6 7 |
h1 { background: linear-gradient(to right, #3fbdb5, #7277f0, #ec5858); -webkit-background-clip: text; -webkit-text-fill-color: rgba(255, 255, 255, 0); color: #333; //for IE display: inline-block; } |
グラデーションさせたい要素をspanで囲む
spanはインライン要素なので、こちらでも同様の結果が得られます。
1 2 3 4 5 6 |
h1 span { background: linear-gradient(to right, #3fbdb5, #7277f0, #ec5858); -webkit-background-clip: text; -webkit-text-fill-color: rgba(255, 255, 255, 0); color: #333; //for IE } |
linear-gradientはemでも指定できる
いろいろ試しててわかったのですが、linear-gradientは%だけでなく、emでも指定できることを知りました。
Sassの関数とかjsでなんやかんや工夫できるかもしれませんね。
コピペ用としてお使いください(CodePen)
今回の記事で使ったコードをひとまとめにしました。
コピペなどして使いくださいm(_ _)m
See the Pen
[CSS Tips] text-gradation-row-direction by Hayato Kamiyama (@kami8ma8810)
on CodePen.
ちなみにSVGでいろいろ実装できたりもするらしいです。

ネコーダー
にゃんだと!?

IE非対応のCSSグラデーションを文字にかける2つの方法(画像・SVG) – 東京のホームページ制作 / WEB制作会社 BRISK
IEで文字にグラデーションをかけようとするとこのようになります。 文字の背景に色がついてしまうんですね。 デザインの関係などで、IEでも文字にグラデーションをかけたいときがあるかと思います。 以下のようにしたので参考にしてみてください。 画像や幅指定などおこなうので、文字数や文字サイズが決まっているときのみにおすすめで...

文字にグラデーションをかける方法 | Designmemo(デザインメモ)-初心者向けWebデザインTips-
CSS3のグラデーション機能を使って文字にもグラデーションをかけることができます。これを使えば画像を作らなくてもテキストベースでいろいろな表現が簡単にできます。

CSS3でテキストにグラデーションをかける方法 | mariweb
最近のWebデザインではグラデーションを取り入れたデザインが多くなっているように感じます。今回は、CSS3で文字にグラデーションをかけたり、おまけとして文字の塗りを画像にする方法を説明していきます。
コメント