为什么`margin:1 auto;`不起作用?

时间:2016-08-29 00:16:05

标签: css

为什么margin: 0 auto;有效但margin: 1 auto;没有?是否有一些简单的解决方法?

      .container {
       width: 220px;
       /* margin: 0 auto; */ /* <-- works.*/
       margin: 1 auto; /*<-- error. HOW TO FIX??? */
       padding: 16px;
       display: block;
       border: 2px solid black;
      }
<div class="container">
  <p style="text-align: center;">Lorem ipsum dolor sit amet, consectetur adipisicing elit. Sint non cumque at minima voluptates totam suscipit, esse vitae recusandae fugit, alias quibusdam odio sunt iure velit, perferendis voluptas ratione quo!</p>
</div>

抱歉愚蠢的问题 UPD:我确信这个答案对有类似麻烦的搜索者有用,请不要删除。

3 个答案:

答案 0 :(得分:4)

因为0是通用的,1然而取决于单位,并且由于没有指定单位,浏览器不知道该怎么做。

答案 1 :(得分:1)

因为margin-*属性只接受长度,百分比和auto。不是整数。

  

本节中定义的属性引用<margin-width>   值类型,可以采用以下值之一:

     
      
  • <length>:指定固定宽度。
  •   
  • <percentage>:百分比是根据计算得出的   包含块的生成框的宽度。
  •   
  • auto
  •   

然后,0有效,因为它是有效的length,但1不是。

  

长度值的格式(在此表示为<length>   规范)是<number>(带或不带小数点)   紧接着是单元标识符(例如,px,em等)。后   零长度,单位标识符是可选的。

如果您添加了1px1cm1em1vh或其他任何单位,那么这将是有效的。

因此,your declaration is ignored

  

用户代理必须忽略具有非法值的声明。

答案 2 :(得分:1)

0本身就意味着0,但任何更大或更小的东西都需要一个单位。你不能说1并期望长度/大小/等。

0表示无,有效。 1本身没有单位,CSS也不承担任何责任。

padding: 0px; /* px is redundant here because 0 means none */

padding: 1; /* error, what is 1? 1 cm? 1 em? */