ちょっと休憩

休憩時間の暇つぶしに。IT、日常生活での出来事、ホームページ制作を素人目線から。

ホームページ制作練習(画像に文字を載せる方法)

みなさんどうも。

たけるです。

今日のお題は…
僕がホームページを作っている際に生じた疑問点について、
解決法を書いていく。というお題です。
勉強している方々の参考になれば幸いです。

さて、
以下の画像をご覧ください。

カップルの画像だ。
くー、幸せを満喫しやがって悔しい!

というのは置いといて解説したいと思います。

話に戻りますが、
今回は画像に青い文字を重ねたいと思います。
これがHTMLとCSSです。それと先ほどの画像と。

See the Pen kaisetu2 by takeru77 (@takeru77) on CodePen.

bodyタグの直下にmainクラス。そしてそのCSSには
position: relative;で基準とする場所を決めました。
mainクラスのさらに直下のh1タグにはposition:absolute;
を設定し、動かす要素を決定しました。

今のコードでは青い文字が画像の上に乗っからず、
下の方にずれているのが分かると思います。
ここで私は思いました。

CSSの.main h1 { でposition: absolute;を指定しているのに
なんで上に乗っからないのだろう?
relativeは.mainに設定してあるはずなのに…」

このように親要素.mainクラスにrelativeが指定されていて、
かつ子要素.main h1 { にabsoluteが指定されていても、
その子要素の上にもう一つ同階層の子要素があると(
HTMLファイルのmainクラスの中のimg要素のこと)
青い文字は画像にうまく乗っかりません。

←←←(特に意味はありません)

こういう場合にはabsoluteが指定されているCSS
(今回で言えば.main h1 {   )
の場所にtop:を指定すると変わります。

試しにtop:0;を指定してみましょう。こうなります。

See the Pen kaisetu3 by takeru77 (@takeru77) on CodePen.

うまくいきましたね。

後はそのtop:0;をtop:50px;とかtop:20%;とか指定して
高さをつけるだけです。

See the Pen kaisetu4 by takeru77 (@takeru77) on CodePen.

僕はtop:70%;くらいにしました。

 

 

と、ここまで散々書きましたが…
青い文字を画面に載せる方法ではもう少し簡単な方法が
あることに気づきました。

←←←(特に意味はありません)のところです。

それはHTMLファイルでmainクラスの中の
img要素とh1要素を逆にすれば良いということです。
(top:を指定する前段階に)

そうすればh1要素はabsoluteを指定しているため、高さが消え、
(absoluteを指定するとその要素の高さが消えます。
 まだ書いてませんでしたが…また今度記事にします。)
画像とh1要素が重なるというわけです。
その後はtop:を指定してh1要素の文字を好きな場所に
配置するなりすれば良いということです。

See the Pen kaisetu5 by takeru77 (@takeru77) on CodePen.

 

こういうのは
ネットで色々解決策を調べたりするのですが、
さまざまな解決法があり頭が混乱します…

というわけで
ではまた。