divのbackgroundではなく、
imgの上に文字を配置したい(alt属性を使いたい時など)
img{
max-width:100%;/*自分以上には大きくならないand 親要素に対して横幅100%*/
}
こう書いておくとidやclassの中に入っているimgもそうでないのも全部にかかるよ。
--->img_position.html
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="ja">
<title></title>
<link rel="stylesheet" href="test2.css">
<script src="../jquery-3.4.1.min.js"></script>
</head>
<body>
<h1>imgの上に文字を配置</h1>
<div class="hero">
<div class="hero_img">
<img src="hero.jpg" alt="サラダの画像ですよ">
</div>
<div class="hero_title">
<h2>毎日の食事!<br>後略</h2>
<p>日々の食事が中略あなたへ</p>
</div>
</div>
<script src="test2.js"></script>
</body>
</html>
--->test2.css
@charset="UTF-8";
body{
background: #EFF;
}
img{
max-width:100%;/*自分以上には大きくならないand 親要素に対して横幅100%*/
}
.hero{
color: #fff;
position: relative;/*親要素にrelativeをかける。親要素を基準に子を動かしたい*/
}
.hero .hero_title{
position: absolute;
left: 4rem;
top: 50%;
transform: translateY(-50%);
}
注意!
.hero のあとに半角スペースが要りますよ(子要素なので)
ただこれだと上下のはみ出た部分が隠れている。
floatのはなしを思い出せ
横並びしたい箱に親要素
中に子要素、1列目に2箱(a,b)、2列目に1箱(c)
aとbにfloat
cにclear bothしないと親要素の高さが0のまま。
場合によってはこの末っ子cがいない。
→clearする場所がない
→方法は2つ
1.親要素にoverflow hiddenをかける(はみ出たものは隠す。なんかしらないけど親要素の高さが戻る)
2.むりやり末っ子を作る
--->test2.css(ソースが違ってる可能性がある)
@charset="UTF-8";
body{
background: #EFF;
}
img{
max-width:100%;/*自分以上には大きくならないand 親要素に対して横幅100%*/
}
.hero{
color: #fff;
position: relative;/*親要素にrelativeをかける。親要素を基準に子を動かしたい*/
}
.hero .hero_img{
height: 520px;
overflow: hidden;/*高さ520よりはみ出した部分を隠せ*/
}
.hero .hero_title{
position: absolute;
left: 4rem;
top: 50%;
transform: translateY(-50%);
}