グラデーションカラーのテキストを作成する

リィン
質問: 文字がグラデーションしている表現
Webページで文字がグラデーションして表示されているものがあります。 どうやって実現するのでしょうか?テキスト選択できましたので、SVG画像ではなくテキストだと思います。

実現方法

文字をグラデーションで表現するには、背景をグラデーションで作成し、文字を透明色で表示し、背景を文字でクリッピングすることで グラデーションした文字を表現できます。

グラデーションカラーのテキストを作成する:画像1

コード

以下のHTML,CSSファイルを作成します。

GradientText.html
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8" />
  <title></title>
  <link rel="stylesheet" href="GradientText.css" />
</head>
<body>
  <h1>グラデーションするテキストのデモ</h1>

  <div class="GradientText">iPentec Web Demo</div>

</body>
</html>

GradientText.css
.GradientText {
  font-size: 64px;
  font-weight:700;
  background: linear-gradient(90deg, #7c3aed, #ff0000, #ff6a00);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
}

解説

GradientTextがグラデーションする文字を表現するクラスです。


以下のコードでグラデーションの背景を作成します。
linear-gradientの最初のパラメータに 90degを指定することで、左から右へのグラデーション表現になります。

background: linear-gradient(90deg, #7c3aed, #ff0000, #ff6a00);


下記のbackground-clipプロパティが文字でマスクする設定です。

  -webkit-background-clip: text;
  background-clip: text;

文字列のカラーは透明色にして背景色が見える状態にします。

  color: transparent;

実行結果

上記のHTMLファイルをWebブラウザで表示します。下図のページが表示されます。 テキストがグラデーション表示されていることが確認できます。

グラデーションカラーのテキストを作成する:画像2

正しく表示されない

同様の設定をした場合でも、グラデーションのテキストが表示されない場合があります。これは、 backgroundの記述より手前に-webkit-background-clip, background-clip を記述した場合には正しく表示されません。 これは、background-clip でクリップされた設定が、その後のbackground設定の際に解除されてしまうためです。

以下はうまく表示できないCSSの設定になります。

.GradientTextNG {
  font-size: 64px;
  font-weight: 700;
  -webkit-background-clip: text;
  background-clip: text;
  background: linear-gradient(90deg, #7c3aed, #ff0000, #ff6a00);
  color: transparent;
}


文字列にGradientTextNGクラスを設定し、ページを表示した場合が下図です。グラデーションの背景のみが表示され、 文字列でマスクされた表示にはならないことが確認できます。

グラデーションカラーのテキストを作成する:画像3



AuthorPortraitAlt
著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
作成日: 2025-12-27