您有4个,可能是5个解决方案,其中一个添加到底部,因为它是从原始CSS和JS的组合中得出的,用于设置高度:
- 使用表格单元格并将其内容垂直居中
- 使用
display: table-cell; vertical-align: middle;
作为您的div的CSS
- 通过JavaScript每次div的高度更改时更新margin-top
- 使用CSS3 flexbox(您需要使用供应商特定的扩展名,因此它在一些旧浏览器上无法工作)
使用旧式flexbox的简单示例 - Chrome版本 - 添加包装器div并将其样式设置为:
#wrapper { display: -webkit-box; -webkit-box-align: center; }
#wrapper > div { margin: auto; }
为此做出贡献 http://jsfiddle.net/gK7YU/
新样式的弹性盒子 - 同时适用于chrome版本,您还需要在最终产品中添加其他供应商前缀以及没有前缀的版本。
#wrapper { display: -webkit-flex; }
#wrapper > div { margin: auto; }
针对此问题的演示代码: http://jsfiddle.net/LeHRD/
这些示例包含了更多的CSS属性,以便您可以轻松地查看发生了什么。
哦,抱歉,您不需要使用包装器div,您可以使用flexbox垂直居中任何内容...无论如何,我提出的解决方案可以与display:table-cell;
结合使用,因此它也适用于旧浏览器。
您也可以使用指定高度的绝对定位 jsfiddle.net/N28AU/1
#wrapper { possition:relative }
#wrapper > div { position:absolute;top:0;right:0;bottom:0;left:0;margin: auto;}
如果您想避免使用负边距,可以从包含的元素计算高度并通过js更新它。
display: table-cell
:http://stackoverflow.com/a/9561360/557612 - steveax#wrapper
的position
为relative
,并且#wrapper > div { position:absolute;top:0;right:0;bottom:0;left:0;margin: auto;}
。http://jsfiddle.net/N28AU/1/ - MiniGod