別のdiv要素内でdiv要素を水平方向に整列させることmargin: 0 auto;
は、両方が以外の幅プロパティを持っている限り達成できますauto
が、これは垂直方向の整列には適用されません。
divを別のdiv内に垂直に配置するにはどうすればよいですか?
別のdiv要素内でdiv要素を水平方向に整列させることmargin: 0 auto;
は、両方が以外の幅プロパティを持っている限り達成できますauto
が、これは垂直方向の整列には適用されません。
divを別のdiv内に垂直に配置するにはどうすればよいですか?
これには、さまざまなアイデアに基づいて、さまざまなアプローチがあります。要素の高さが固定されている場合(px、%、または何がありますか)、これまでに見つけた最善の解決策は、次の原則に基づいています。
親divposition: relative;
と子divposition: absolute;
を指定して、子を親に対して絶対位置に配置します。
子の場合は、、、top
およびをにbottom
設定します。子にも固定があり、それが親のサイズよりも小さいことを考えると、これはブラウザを不可能な状況に追いやることになります。left
right
0
width
height
margin: auto;
ブラウザの救世主として、子供がやってくる。ブラウザは、子要素がそのサイズを維持できるようにすべての側に十分なマージンを追加できるようになりましたが、、、、およびに設定されているためtop
、親全体を埋めることができます。bottom
left
right
0
TADAAA!要素は、親内で垂直方向と水平方向に整列されます。
マークアップ
<div class="parent">
<div class="child"></div>
</div>
CSS
.parent {
width: 200px;
height: 200px;
position: relative;
}
.child {
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
margin: auto;
width: 100px;
height: 100px;
}
実例
これがjsfiddledisplay:table-cell; vertical-align:middle;
を使用するのが最も簡単だと思います
<style>
.a {
border:1px solid red;
width:400px;
height:300px;
display:table-cell;
vertical-align:middle;
}
</style>
<div class="a">
<div>CENTERED</div>
</div>