よろしくお願いします。
OS:macOS Catalina Webブラウザ:Firefox
html
1 2<!DOCTYPE html> 3<html lang="ja"> 4<head> 5 <meta charset="UTF-8"> 6 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 7 <title>Single</title> 8 <link rel="stylesheet" href="css/style.css"> 9</head> 10<body> 11 12<section class="skills"> 13 <div class="box"> 14 <p class="test1">test1</p> 15 <p class="test2">test2</p> 16 <p class="test3">test3</p> 17 </div> 18</section> 19 20</body> 21</html> 22 23
style
1 2@charset "UTF-8"; 3 4html { 5 font-size: 62.5%; 6} 7 8body { 9 text-align: center; 10} 11 12*, 13*::before, 14*::after { 15 box-sizing: border-box; 16} 17 18.skills { 19 background-color: #fff; 20 height: 700px; 21 width: 100%; 22 border: 5px solid greenyellow; 23} 24 25.box { 26 width: 30%; 27 margin: 0 auto; 28 position: relative; 29 padding: 30px; 30} 31 32.test1 { 33 margin: 20px auto 0; 34 font-size: 4rem; 35 width: 100%; 36 border: 2px solid #000; 37 padding: 100px 20px; 38 color: #000; 39} 40 41.test2 { 42 margin: 0 auto; 43 width: 100%; 44 font-size: 4rem; 45 border: 2px solid #000; 46 padding: 100px 20px; 47 color: #000; 48} 49 50.test3 { 51 margin: 0; 52 position: absolute; 53 font-size: 4rem; 54 width: 100%; 55 height: 50%; 56 background-color: red; 57 top: 50%; 58 color: #000; 59 opacity: 0.8; 60} 61 62
上記において疑問点は2つありまして、.box
にpadding:30px
を挿れない場合は
絶対位置指定した.test3
は.test2
のブロック内にピタリと収まります。
padding
を入れてしまった場合、
上記のようにレイアウトが崩れます。
親要素の.box
にpadding
を挿れても子要素の.test3
で絶対位置指定した場合は.box
のpadding
を無視した左上からtop
,left
等で調整すると思っていたのですが、どのような状態かわかりませんでした。
left:0
に指定して左にピタリとくっついているのを見ると親のpadding
での30px
のぶんは無視して解釈してくれていそうなのですが...
またposition:absolute
にしたことで例外的に祖先要素に高さ指定していなくてもheight50%
は適応になるようですが、なぜ高さや幅に関してボックスを逸脱してしまうのでしょうか。
padding
指定がなければしっかり収まりきるのですが原因がわかりません。
またもう一点の疑問が.test3
にてmargin:0
を指定しておりますが、この指定と先ほどの親要素へのpadding
がない場合は以下
このように.test3
の上下にmargin
が40px
ほど入ってしまいます。これは
reset.css
などでデフォルトの設定を切っていないため発生してしまっているのでしょうか。
言葉足らずかもしれませんが、アドバイスいただけますと幸いです。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/03/07 10:21
退会済みユーザー
2021/03/07 11:19 編集