我有一个未知宽度的块级元素。此元素需要在页面上水平居中,其position
必须为relative
,以便其绝对定位的子项将显示在正确的位置。你可以see it in action here。
据我所知,将未知宽度的元素居中的最佳方法是将其display
设置为table
。在语义上,这似乎是不正确的,因为我的元素与真实表没有任何共同之处。更糟糕的是,Firefox doesn't apply position to tables,所以绝对定位的孩子出现在错误的位置:
是否有任何解决方法:
我想要一个纯粹的CSS修复,而且我的想法已经用完......
答案 0 :(得分:5)
将display: inline-block;
添加到元素(#box
)就足够了。这将使它成为内联元素,并仍然保持其“四四方方”属性。它的宽度会自动占据孩子的宽度。
然后,您可以通过在其父级上设置text-align: center;
来设置其对齐方式。
IE7不支持此display
值(仅适用于自然内联元素),但情况与table
相同(根本不支持)。 You can use a hack though to make inline-block
work in IE7.
答案 1 :(得分:1)
如果最糟糕的情况发生,你可以试试text-align: -moz-center;
这是一种特定于Firefox的方法,可以像内联元素那样使用块元素。