WEBデザイン・プログラミング関連の
情報発信を手掛ける STAND4U

HOME > css > CSSだけで「画像に重ねた文字のはみ出し部分」のテキスト色を変える方法

CSSだけで「画像に重ねた文字のはみ出し部分」のテキスト色を変える方法

流行りの文字が画像からはみ出たデザインで、画像の上だけ文字色を変えたい!

最近流行りの画像から文字ズラすデザイン、CSSだけで簡単にできるので、やり方を解説しよう!

いくつかやり方はあるが、今回はCSSだけでシンプルに2つのテキストを重ねる方法で解説しよう!

背景画像が可変しても問題無い方法であり、さらに2つの同じテキストが、SEO的にスパム扱いされないように考慮した方法で解説したいと思う!

[景品表示法に基づく表記] 本コンテンツにはプロモーションが含まれています。

実際のHTMLとCSSのコード

まずは、実際のコードをCodePenで見てみよう!

See the Pen
ズラしテキスト
by stand4u (@stand4u)
on CodePen.

テキストはみ出し部分を色変更する「仕組み」

基本的な仕組みとしては、まったく同じテキストを2つ同じ位置に重ねて、上になっている方のテキストの親ボックスを背景画像のBOXと同じ位置、同じ大きさに設定した上でoverflow:hedden;をかける事で、はみ出た部分を非表示にする。

はみ出た部分は、下に重なっているテキストが見えているだけというシンプルな仕組み。

ただ、同じテキストを2つ記述するのは、SEO的にスパム扱いされても困るので、片方のテキストは疑似要素の::afterで記述するという方法だ。疑似要素はSEO的に文字として認識されないはず。

HTMLのコード解説

<div class="outer">
  <h1 class="black">
    HELLO <br>WORLD
  </h1>
  <div class="white"></div>
<div>

HTMLのコードを解説すると、外側のdiv.outerが背景画像を入れるBOXであり、その子要素としてH1のテキストを入れ、分かりやすく.blackと名づけている。

H1と並列(兄弟)要素として、空のDIVを作り、コチラは.whiteと名付ける。この空DIVは、擬似要素::afterを使ってH1と同じテキストを設定するためのもの。

CSSコードの解説

.outer {
  position:relative;
  background-color:#ccc;
  width:50%;
  height:300px;
}
.black{
  position:absolute;
  right:-120px;
  top:90px;
  font-size:50px;
  color:#000;
  z-index:-1;
}
.white{
  position:relative;
  width:100%;
  height:300px;
  overflow:hidden;
}
.white::after{
  position:absolute;
  right:-120px;
  top:90px;
  content:"HELLO \A WORLD";
  white-space: pre;
  font-size:50px;
  font-weight:bold;
  color:white;
  z-index:1;
}

上から順に解説していこう。.outerには任意のサイズを設定し、必要に応じて背景画像などを設定。position:relative;に設定して、positionの基準BOXとする。

次にH1(.black)にタイトルテキストを入れて、position:absolute;で画像からはみ出るように位置をずらす。right:-120pxと指定する事で、背景画像(親要素)の右からの位置を指定できる。

また、.blackにはz-index:-1;を指定する事で、背景画像よりも背面に配置しておく。

次に、上から重ねる文字の設定。

空DIVである.whiteは、背景画像用の.outerと全く同じ大きさに設定する。

こちらもposition:relative;に設定して、positionの基準とした上で、oveflow:hidden;を設定する。このボックスからはみ出した部分が消えるという仕組みにする為だ。

最後に、.white::afterで疑似要素を指定して、H1と同じテキストで同じ大きさ同じ位置に配置し、z-index:1;で最前面に設定した上で、文字の色を白など任意の色に設定。

疑似要素は改行できる!

ちなみにcontent:"HELLO \A WORLD";\Aという記述は、次のwhite-space: pre;と一緒に指定する事で、疑似要素の中で改行が指定できる記述だ。

疑似要素を改行できる事を意外と知らない人が多い(僕も知らなかったw)

これで、疑似要素として表示されるテキストは、親要素からはみ出た部分は非表示になり、その下にあるH1のテキストの黒文字が見えるという仕組みなのだ!

まとめ

仕組みを見ると意外とシンプルな記述で実現できる、テキストはみ出しデザイン!

流行りのデザインなので、コーディングする機会もちょくちょく出てくるだろう!ぜひともあなたのWEBサイトでも実験してみてほしい!


※当記事の掲載内容は執筆現在の個人の見解・調査によるもので、動作・サービス等を保証するものではありません。最新情報は各公式サイトでご確認頂き、購入・契約・データ作成等はご自身の判断・責任でお願いします。 免責事項

関連記事

この記事を書いた人

編集長

WEBデザイン・グラフィックデザイン歴:約18年、HTMLコーディング、jquery、wordpress、イラストなど本業とし、WEBデザインコンサル・プログラミング・ライティング等にも勤しんでいます

プロフィールはこちら

Twitter @stand_4u_ をフォロー

[ー]

目次

新着記事