• HOME > 
  • CSS > 
  • CSSのbackground-clipによるテキスト装飾【切...

CSSのbackground-clipによるテキスト装飾【切り抜き・グラデーション・金文字】

投稿日:

このページにはGoogleアドセンス広告とアフィリエイト広告が含まれています。

カテゴリー記事のアイキャッチ画像

本記事は執筆時点(2025年03月06日)の情報をベースにしております。掲載している情報が最新ではない可能性がありますので何卒ご容赦ください。

広告
広告

background-clipプロパティを活用して文字の形に画像を切り抜いたり、文字にグラデーションを掛ける方法について備忘録としてまとめます。

background-clipとは?

CSSのbackground-clipは、HTML要素において背景(background-colorやbackground-image)が表示される範囲を設定するプロパティです。

まだ対応していないブラウザもあるのでベンダープレフィックスも付けておきましょう。

background-clipの書き方

その中でも値の一つである「text」を使うと以下のような文字装飾がCSSだけで実現できます。

  • テキストの形に画像を切り抜く
  • テキストにグラデーションを適用
  • テキストを徐々に透過させる
background-clipによる文字装飾の例

はじめにbackground-clipの基本的な役割についてまとめていきます。

値の種類と表示範囲

background-clipでは、HTMLのボックスモデルにおける「border領域」「padding領域」「content領域」のから背景の表示範囲を指定します。

HTMLのボックスモデル

設定可能な値とそれらの表示範囲の違いは以下の通りです。なお、初期値は「border-box」となっています。

説明
border-box 要素のボーダー領域の部分まで表示 background-clip:border-boxの例
padding-box 要素のパディング領域の部分まで表示 background-clip:padding-boxの例
content-box 要素の範囲にのみ表示 background-clip:content-boxの例
text 要素のテキストの部分にのみ表示 background-clip:textの例

background-clip:textの使い方

background-clip:textを使う上でのポイントは、テキスト自体の色(color)を透明にするという点です。

background-clipによってテキストの形に背景(background)を表示できても、テキストそのものの存在が背景を覆い隠すので、一見すると何の変化も見られません。

テキストと背景の重なり

そこで背景が見えるようテキストを透明にするのですが、この時colorプロパティではなく、-webkit-text-fill-colorを使うように注意してください。

これは、テキストのcolorを透明(transparent)にしてしまうと、background-clipに対応していないブラウザではテキストが見れなくなるという恐れがあるためです。

対応ブラウザのみ背景の切り抜きとテキストの透過が適用されるよう「-webkit-text-fill-color: transparent」を使うようにしましょう。

テキストの形に画像を切り抜く

まずは下図のようにテキストの形に画像を切り抜く方法です。画像編集ソフトで行うようなデザインをCSSだけで得られます。

テキストの形に画像を切り抜く

コードは以下の通りです。

CSS

bc-text{
    background-image: url(sample1.png);
    background-repeat: no-repeat;
    background-position: bottom;
    background-size: cover;
    -webkit-background-clip: text;
    background-clip:text;
    -webkit-text-fill-color: transparent;
}

2行目〜切り抜きたい画像をbackground-imageプロパティで指定します。background-sizeで要素全体に背景画像を引き伸ばしています。

テキストにグラデーションを適用

続いては、文字色をグラデーションにする方法です。colorプロパティでは実現できないグラデーションをbackground-clipによって表現します。

今回は文字が金色に輝いてみえるようなグラデーションを作ってみました。

background-clipで金色グラデーション

コードは以下の通りです。

CSS

.bc-text{
    background:-webkit-linear-gradient(to top,#ccb800 0%,#ccb800 45%,#fffd84 50%,#ebd303 55%,#ebd303 100%);
    background:linear-gradient(to top,#ccb800 0%,#ccb800 45%,#fffd84 50%,#ebd303 55%,#ebd303 100%);
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
}

2行目3行目グラデーションはlinear-gradient関数を使って作成します。ここでは下から上へとグラデーションを設定しています。

グラデーションを動かす

先ほどのコードに少し手を加えるだけでグラデーションを動かすアニメーションを作ることもできます。

background-clipで金色グラデーションを動かす

CSS

.bc-text{
    background:-webkit-linear-gradient(to right,#ebd303 0%,#ebd303 45%,#fffd84 50%,#ebd303 55%,#ebd303 100%);
    background:linear-gradient(to right,#ebd303 0%,#ebd303 45%,#fffd84 50%,#ebd303 55%,#ebd303 100%);
    background-size:200% 200%;
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
    animation: effect1 3s infinite;
}
@keyframes effect1{
    0%{
        background-position:0% 0%;
    }
    50%{
        background-position:100% 50%;
    }
    100%{
        background-position:0% 0%;
    }
}

2行目3行目グラデーションの角度と配色を調整しました。

4行目アニメーションはbackground-positionを動かして表現するのでにbackground-sizeを設定しておきます。

10行目〜@keyframesでbackground-positionを変化させています。

テキストを徐々に透過させる

最後は、グラデーションを使って徐々にテキストを透明にします。

background-clipでテキストを徐々に透過させる

コードは以下の通りです。

CSS

.bc-text{
    background:-webkit-linear-gradient(90deg,#181818 0%,transparent 80%);
    background:linear-gradient(90deg,#181818 0%,transparent 80%);
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
}

まとめ

以上が、background-clipを使ってテキストの形に画像を切り抜いたり、文字にグラデーションを掛ける方法です。

CSSだけでテキストデザインの表現の幅を広げることができるので是非取り入れてみてください。

広告
広告

関連する記事

サムネイル

CSS内で独自の変数を定義・参照する方法【カスタムプロパティ……

2025年02月06日
今更ながらCSSで変数を使えることを知ったので、今回はカスタムプロパティの使い方について備忘録としてまとめてみます。 CSSのカスタムプロパティとは? CSSの […]
サムネイル

CSSのcounter関数でカウントを行って連番を表示する

2025年02月06日
最近になって、contentプロパティのcounter関数を使えばCSSだけで要素をカウントして連番を表示できることを知りました。本記事ではcounter関数の […]
サムネイル

CSSのattr関数でHTMLの属性値を取得・表示する【ツー……

2025年02月06日
最近になって疑似要素で使うことができるCSSのattr関数の存在を知りました。コーディングの幅を広げる便利な関数だと感じましたので学んだ内容を備忘録としてまとめ […]
サムネイル

CSSのoutlineプロパティの使い方【borderとの違……

2025年02月06日
CSSのoutlineプロパティについて学び直す機会がありましたので、borderとの使い分けを含めて備忘録としてまとめます。 outlineプロパティとは? […]
サムネイル

CSSでPNG画像に影を落とす方法【filterプロパティd……

2025年01月15日
CSSでドロップシャドウをつけるには? CSSで要素に影(ドロップシャドウ)を付ける手段としては「box-shadow」や「text-shadow(テキストの場 […]
サムネイル

CSSのfilterプロパティの関数の種類と効果をまとめ【フ……

2025年01月06日
最終更新日:2025年01月15日
IEのサポートが終了したので、これまで使う機会の少なかったfilterプロパティを改めて調べたところ、CSSでの表現の幅を広げてくれる画期的なプロパティだと気づ […]