我认为您可以display: inline-block
在要居中的元素上使用并text-align: center;
在其父元素上设置。这绝对使所有屏幕尺寸的 div 居中。
在这里你可以看到一个小提琴: http: //jsfiddle.net/PwC4T/2/为了完整起见,我在这里添加了代码。
HTML
<div id="container">
<div id="main">
<div id="somebackground">
Hi
</div>
</div>
</div>
CSS
#container
{
text-align: center;
}
#main
{
display: inline-block;
}
#somebackground
{
text-align: left;
background-color: red;
}
对于垂直居中,我“放弃”了对一些旧浏览器的支持,转而支持display: table;
,这绝对减少了代码,请参阅这个小提琴:http: //jsfiddle.net/jFAjY/1/
这是(再次)完整性的代码:
HTML
<body>
<div id="table-container">
<div id="container">
<div id="main">
<div id="somebackground">
Hi
</div>
</div>
</div>
</div>
</body>
CSS
body, html
{
height: 100%;
}
#table-container
{
display: table;
text-align: center;
width: 100%;
height: 100%;
}
#container
{
display: table-cell;
vertical-align: middle;
}
#main
{
display: inline-block;
}
#somebackground
{
text-align: left;
background-color: red;
}
这种方法的优点是什么?您不必处理任何 percantage,它还可以正确处理<video>
标签 (html5),它有两种不同的尺寸(一种在加载期间,一种在加载后,在加载视频之前,您无法获取标签尺寸)。
缺点是它放弃了对一些旧浏览器的支持(我认为 IE8 不能正确处理这个问题)