我想将div
CSS垂直居中放置。我不需要表或JavaScript,而只需要纯CSS。我找到了一些解决方案,但是所有这些解决方案都缺少Internet Explorer 6支持。
<body>
<div>Div to be aligned vertically</div>
</body>
如何div
在所有主要浏览器(包括Internet Explorer 6)中垂直居中?
下面是我可以构建的最佳全能解决方案,以将固定宽度,高度灵活的内容框垂直和水平居中。它已经过测试,可用于Firefox,Opera,Chrome和Safari的最新版本。
.outer {
display: table;
position: absolute;
top: 0;
left: 0;
height: 100%;
width: 100%;
}
.middle {
display: table-cell;
vertical-align: middle;
}
.inner {
margin-left: auto;
margin-right: auto;
width: 400px;
/*whatever width you want*/
}
<div class="outer">
<div class="middle">
<div class="inner">
<h1>The Content</h1>
<p>Once upon a midnight dreary...</p>
</div>
</div>
</div>
我构建了一些动态内容来测试灵活性,并且很想知道是否有人看到它的任何问题。它也应适用于居中的叠加层-灯箱,弹出式窗口等。
如果没有“绝对”外部DIV,则页面上的任何内容将向下推整个块。这使其更独立于其他页面内容。
.outer {position:absolute;width:100%;height:100%}
没有必要,它们只是在这里进行演示。我们需要的是display:table
,如果有人像我一样感到困惑。我注意到,这需要99%的比例来避免滚动条。更重要的是,该工程仅在第一个两个div,说保持
.outer
和middle
明白地忽略.inner
和它的风格。我不知道的要点是什么margin-left
,margin-right
将其设置为auto,因为它不会使元素水平居中?删除
width: 100%;
和添加margin: 0 auto
也.outer
允许可变宽度。现在是2020年,我们不再需要像这样的技巧来进行垂直居中。只需在父元素上使用flexbox。它甚至可以在IE11中使用!
.outer { display: flex; justify-content: center; align-items: center; height: 400px}
(请注意,垂直居中始终要求父元素的高度是有限的)