こんにちは!
以下画像のような配置でモーダルを作成しようと思ったのですがうまくいきません。
理解できないのがtop: 30px;
を設定すると思った通りの配置になります。
なぜposition: absolute;
を設定しているのに、画面左上からの配置にならずli要素の下からの配置になるのでしょうか。
詳しい方教えていただけますと幸いです。
やりたい配置
- モーダルのdiv要素に
position: absolute;
を設定して画面左上に配置 margin-top: 30px;
を設定し、画面最上部から30pxマージンを設けたい
現状
モーダルのdiv要素にposition: absolute;
を設定しているので、画面左上に配置されると思いきや、li要素の下に配置されてしまう
コード
HTML
1<ul> 2 <li><a>サンプル請求</a></li> 3 <li><a>サンプル請求_完了</a></li> 4</ul> 5<div id="modal_wrap"> 6 <div id="sampleForm-input" class="modal-content"> 7 </div> 8 <div class="modal-overlay"></div> 9</div>
CSS
1.modal-overlay { 2 z-index: 1; 3 display: block; 4 position: fixed; 5 top: 0; 6 left: 0; 7 width: 100%; 8 height: 100%; 9 background: rgba(0, 0, 0, 0.8); 10} 11.modal-content { 12 z-index: 2; 13 display: block; 14 position: absolute; 15 width: 300px; 16 height: 300px; 17 margin-top:30px; 18 background: #fff; 19}
ご提示のコードを当方で試してみましたが、一つ目のスクリーンショットのようになりました。
つまり、問題が再現しません。
失礼いたしました!
cssの .modal-content に top: 30px;の指定がありましたので削除しました。
今回の疑問としましては top: 30px; の指定が無い場合でも思ったとおりの配置になるのではないか、ということでした。
確認いたしました。
bodyからずれてしまう理由は、cerfweb さんのコメントの通り、こういうことです。
---
auto
以下のように指定します。
・絶対位置指定要素では、要素の位置は bottom プロパティに基づいて決まり、 height: auto は内容物の高さに基づいて決まります。また、 bottom も auto であった場合は、要素は垂直方向には**静的要素が配置される場合と同様**に配置されます。
https://developer.mozilla.org/ja/docs/Web/CSS/top#Values
---
top は初期値が auto なので、指定しない場合は、auto として扱われます。
ありがとうございます!
>要素は垂直方向には**静的要素が配置される場合と同様**に配置されます。
絶対位置指定要素はそういう仕様だったのですね!
理解することができました!
回答1件
あなたの回答
tips
プレビュー