确切地,“保证金:0自动;”需要什么?上班?


205

我知道margin: 0 auto;元素上的设置用于使其居中(左右)。但是,我知道该元素及其父元素必须满足某些条件才能使用自动边距,而且我似乎永远无法正确理解魔术。

所以我的问题很简单:为了margin: 0 auto;使孩子左右居中,必须在元素及其父元素上设置哪些CSS属性?


这似乎永远无法在IE中正常工作...所以我也对此感到很好奇。
mpen 2011年

5
@Mark:IE margin: 0 auto;仅在标准模式下才能正确处理,因此您需要一种doctype(好像以前不需要)。
BoltClock

Answers:


292

从我的头顶上:

  1. 所述元件必须是块级,例如display: blockdisplay: table
  2. 元素不能浮动
  3. 元素不得具有固定或绝对位置1

在别人的脑海中:

  1. 元素必须具有width不为auto2的

请注意,所有这些条件都必须符合居中的元素才能使其正常工作。


1 有一个例外:如果你的固定或绝对定位的元素有left: 0; right: 0与汽车的利润中心

2 从技术上讲,margin: 0 auto确实可以使用自动宽度,但是自动宽度优先于自动边距,因此自动边距被清零,从而使其看起来好像“不起作用”。


7
两个“走出我头顶”的答案:o
罗素·迪亚斯

4
添加固定宽度,您将获得完美的答案
meo

1
该死的!我正在编码时,其他所有人都回答了!:O
Kyle

我错过了该ol start属性(并且无法在Markdown中完成):(
BoltClock

1
@Triynko:问题和我的回答都没有提及HTML表示属性(问题甚至都没有标记[html]!),所以我不确定您到底在说什么。无论如何,虽然可以用CSS定位的每个元素都可以具有CSS的width和height属性,但并非所有HTML元素都可以具有相应的表示属性,其原因仅仅是因为将它们放在特定的位置上没有任何意义。 HTML元素。
BoltClock


8

CSS的完整规则:

  1. display: block并且width不是自动的)或display: table
  2. float: none
  3. position: relative

3

如果该元素不是block元素,请放在我的头顶上-做到这一点。

然后给它一个宽度。


2

它也可以与display:table一起使用-在这种情况下非常有用的显示属性,因为它不需要设置宽度。(我知道此职位已有5年历史了,但仍然与路人有关;)


2

确保在div您要居中的位置上,我的猫的头部未设置为width: 100%

如果是,那么子div上设置的规则将很重要。


1

请转到我创建了jsFiddle的这个简单示例。Hopefull很容易理解。您可以使用具有wrapper站点宽度的div来居中对齐。您必须输入的原因width是浏览器知道您不打算采用液体布局。


1

这是我的建议:

First: 
      1. Add display: block or table
      2. Add position: relative
      3. Add width:(percentage also works fine)
Second: 
      if above trick not works then you have to add float:none;


-1

对于任何人刚才打了这个问题,并没有能够修复margin: 0 auto,这里的东西我发现可能对您有用:一个table元素,没有指定的宽度必须有display: table没有 display: block为了margin: auto做的工作。这对于某些人可能是显而易见的,因为display: block和默认width值的组合将使表扩展以填充其容器,但是如果要使表采用“自然”宽度居中,则需要display: table


那不是真的 (尽管如果您给出它,display: block那么它将不符合所接受答案的条件4)
Quentin

@Quentin感谢您的注意。就我而言,我希望表格填充水平空间(这似乎避免了整个讨论margin: 0 auto),而且我也无法指定表格的宽度,因为表格的内容可以具有不同的宽度。在这种情况下,唯一可行的解​​决方案(即以正常方式渲染表格但将表格居中)是没有宽度规则的,display: table并且margin: 0 auto
samson
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.