Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Css “究竟需要什么?”;保证金:0自动&引用;工作?_Css - Fatal编程技术网

Css “究竟需要什么?”;保证金:0自动&引用;工作?

Css “究竟需要什么?”;保证金:0自动&引用;工作?,css,Css,我知道设置margin:0自动用于将其居中(左-右)。但是,我知道元素及其父元素必须满足某些标准,才能使自动边距正常工作,而且我似乎永远也无法正确使用这个神奇的元素 所以我的问题很简单:为了margin:0auto,元素及其父元素必须设置哪些CSS属性在孩子左右居中?在我头顶上: 元素必须是块级别,例如display:block或display:table 元素不能浮动 元件不得具有固定或绝对位置1 在别人的脑海里: 元素的宽度必须不是自动2 请注意,这些条件中的所有都必须适用于居中的图元,才能

我知道设置
margin:0自动用于将其居中(左-右)。但是,我知道元素及其父元素必须满足某些标准,才能使自动边距正常工作,而且我似乎永远也无法正确使用这个神奇的元素


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

在我头顶上:

  • 元素必须是块级别,例如
    display:block
    display:table
  • 元素不能浮动
  • 元件不得具有固定或绝对位置1
  • 在别人的脑海里:

  • 元素的
    宽度
    必须不是
    自动
    2
  • 请注意,这些条件中的所有都必须适用于居中的图元,才能正常工作


    1对此有一个例外:如果您的固定或绝对定位元素有
    左:0;右:0


    2从技术上讲,
    margin:0 auto
    确实适用于自动宽度,但自动宽度优先于自动边距,因此自动边距被调零,使其看起来似乎“不起作用”。

    在我看来,它需要一个
    宽度。您需要指定要居中的容器的宽度(而不是父宽度)。

    如果元素不是块元素,请从我的头顶开始,这样做


    然后给它一个宽度。

    请转到我创建的这个快速示例。希望很容易理解。您可以使用
    包装
    div将站点的宽度居中对齐。您必须将
    宽度设置为
    的原因是,这样浏览器就知道您不会选择液体布局。

    也许有趣的是,您不必为
    元素指定宽度来使其工作-只需确保它具有
    显示:块

    它还将与display:table一起工作-在这是因为它不需要设置宽度。(我知道这篇文章已经5年了,但它仍然与过路人相关;)

    CSS的完整规则:

  • display:block
    width
    非自动)或
    display:table
  • float:none
  • 位置:相对
  • 以下是我的建议:

    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;
    

    在我的猫的头顶上,确保你试图居中的
    div未设置为
    宽度:100%


    如果是,那么在子div上设置的规则才是最重要的。

    对于刚才遇到这个问题但无法修复
    边距:0 auto
    的任何人,我发现了一些有用的东西:没有指定宽度的
    table
    元素必须具有
    display:table
    而不是
    display:block
    ,以便
    margin:auto
    工作。这对某些人来说可能是显而易见的,因为
    display:block
    和默认的
    width
    值的组合将产生一个表格,该表格将展开以填充其容器,但如果您希望表格采用“自然”宽度并居中,您需要
    display:table

    以防您的父元素没有固定的宽度,让具有
    display:flex
    的父元素为我工作。

    在IE中,这似乎永远不会对我正常工作。。。所以我对此也很好奇。@Mark:IE将处理
    margin:0auto仅在标准模式下正确,因此您需要doctype(好像以前不需要doctype)。一切都在我们的脑海中浮现!加上固定的宽度,你就得到了完美的答案。我错过了
    ol start
    属性(而且不可能在降价中成功):(干杯,这似乎确实有效。虽然要使
    ul
    li
    s均匀地分布在它上面仍然很困难,但我想那是另一回事。这是公牛。我有一个绝对定位的元素,边距:auto居中。我设置了位置:绝对;左:0;右:0;下:0;上:0;边距:auto;它得到c输入。这里是一个障碍,例如,如果要居中的元素是img或canvas,则只需设置HTML宽度/高度属性即可。但是,如果是DIV,则HTML宽度/高度不足,并且必须设置CSS宽度/高度。行为极为奇怪且不一致。@Triynko:问题和m都没有y answer曾经说过任何关于HTML表示属性的事情(这个问题甚至没有标记[HTML]!),所以我不确定你到底在说什么。无论如何,虽然CSS可以针对的每个元素都可以有CSS的宽度和高度属性,但不是所有HTML元素都可以有相应的表示属性,原因很简单,就是在某些HTML元素上有它们是没有意义的。(虽然如果你只是给它
    display:block
    ,那么它就不符合接受答案的条件4)@Quentin谢谢你的提醒。在我的情况下,我不想让表格填满水平空间(这似乎可以避免关于
    边距:0 auto
    的整个讨论)我也不能指定表格的宽度,因为它的内容可能有不同的宽度。在这种情况下,唯一有效的解决方案(即以正常方式渲染表格,但使其居中)是没有宽度规则,
    display:table
    margin:0 auto