【CSS】画像の上に文字を重ねよう【relative, absolute, transform】

HTML-CSS

みなさんこんにちは、現役エンジニアのサメハックです

アパレル企業でトップ販売員を経て
未経験からWebエンジニアに転職し、
現在正社員として5年働いています!

1分で理解できるHTML/CSS講座シリーズです。

今回は画像の上に文字を重ねる方法について学んでいきましょう!

駆け出しエンジニアや未経験の方、
また新入社員を指導する先輩社員にとっても
わかりやすいように解説していきます!

この記事を読むと・・・
  • 1分で要素を重ねる事ができる
  • 1分で文字を画像の中心に配置することができる
  • 1分でtransformの使い方がわかる
1分で理解できるHTML/CSS講座シリーズはじめっ!

親要素に子要素を重ねるには??

要素を重ねるために必要なことは

  • 親要素にposition:relativeを設定
  • 子要素にposition:absoluteを設定

relative → 相対位置の指定
absolute → 親要素に対する絶対位置の指定

つまり、relative設定した親要素を基準
子要素の配置を絶対位置で指定できる。ということです。

See the Pen
relative
by samehack (@samehack)
on CodePen.

relative、absoluteの補足

相対位置の指定!!絶対位置の指定!!
と聞くとすごく難しく感じるのですが、この場合には

親要素(relative)「ボクを基準に配置を決めてね!!」
子要素(absolute)「わかった!キミから見て上から100px、左から100pxの位置に配置するよ!」

というやり取りをしているだけなので、単純に考えるとめちゃくちゃ簡単です。

relativeは基準位置の指定
absoluteは基準位置に対して、どこに配置するかの指定だよ!

子要素を真ん中に配置するには

top:50%; left:50%;だけでは不十分!

これまでの知識をベースに考えると、
以下のような指定方法を思いついたかと思うのですが
実はこれだけでは設定が不十分です。

.親要素 {
  /* 相対位置設定 */
  position: relative;
}

.子要素 {
  /* 親要素に対する絶対位置指定 */
  position: absolute;
  /* 上から50% */
  top: 50%;
  /* 左から50% */
  left: 50%;
}

これだと、画像の中心を“開始位置”として子要素を配置するため、
テキストが若干右下によってしまいます。

transformを使って配置を調整しよう

配置の微調整はtransformを記述することで実現可能です。
※ちなみに、自身の要素の大きさが%の基準になります。

transform: translate(-50%, -50%);

transformの構文

transform: translate(X軸, Y軸);

/* もしくは */
transform: translateX(X軸);
transform: translateY(Y軸);

これは、なにをしているかというと、
X軸、Y軸に対して行き過ぎてしまった50%の部分を戻すことで
親要素の中心部に配置しています。

画像の真ん中に文字を重ねよう

See the Pen
relative-50%
by samehack (@samehack)
on CodePen.

position設定、transformを組み合わせることで、
画像の中心にテキストを配置することができました!

Web製作をやっていたらかなりの頻度ででてくるよ!

まとめ

  • 親要素にposition:relativeを設定
  • 子要素にposition:absoluteを設定
  • top:50%; left:50%;だけでは不十分
  • transform: translate(-50%, -50%);を設定して中心に配置できる

満足いただけたら、1クリックなのでSNSフォローしてもらえると嬉しいです🦈

タイトルとURLをコピーしました