【发布时间】:2012-12-09 03:34:22
【问题描述】:
我已经搜索了很多以水平和垂直居中div,这是到处给出的方法:
div {
position:fixed;
top:50%;
left:50%;
margin-left:(div width/2)
margin-top: (div height/2)
}
我刚刚找到了一个新的解决方案,可以将div 水平和垂直居中,方法是将其包裹在表格中。我已经在ie7及以上,以及其他浏览器测试过。
这是一个例子:http://jsbin.com/ocenok/2/
我想知道第一种方法在互联网上随处可见,SO 等。并且需要事先了解宽度和高度,或者通常通过 Javascript 计算。
表格方法似乎完美无缺,既不需要 javascript,也不需要固定的高度/宽度。
表格方法有任何缺点吗?
(我不知道要居中的 div 的高度/宽度。)
更新(让我的问题更清楚):
我自己讨厌将表格用于非表格/布局数据。
- 我知道使用 Javascript 可以轻松实现我想要的。
- 我想我可以使用
display:table来实现这一点,从而取消对 IE7 的支持。
但我想了解的是,当我可以使用单个 <table> 元素实现这一点时,如果有的话,缺点是什么。
在此处和类似问题上查看答案,没有人推荐这种方法,即使它使用所有有效的 HTML 元素以及语法和规则。
如果大家都推荐使用javascript来处理presentation,虽然CSS很容易实现,但它一定有一些缺点。
代码:
<table>
<tr>
<td>
<div>This is div that needs to be centered.</div>
</td>
</tr>
</table>
然后应用下面的 CSS
table {
width:100%;
height:100%;
position:fixed;
top:0;
left:0;
}
table td {
width : 100%;
text-align: center;
}
div {
width:100px;
height:100px;
background:pink;
margin: 0 auto;
}
【问题讨论】:
-
@Forty-Two
1 table > 1 tr > 1 td帮助我完成工作,而不是使用 javascript。 -
然后他在他的桌子上放了一个 div……这样你就可以在你的容器里放一个容器,对吧?您知道,您发布的 CSS 正在被使用,因此您不必像过去那样使用表格。
-
@DanMan :您是在建议我应该使用 Javascript 来实现使用 CSS 本身可能的东西?
-
你也可以使用嵌套的 div 并使用 display: table, display: table-row, display: table-cell....但是社区不使用
标签,还说显示:CSS 中的表格?我真的不知道......你是法官......
仅查看我的更新答案 HTML 和 CSS。