【问题标题】:Invalid property value for margin-left: automargin-left 的属性值无效:auto
【发布时间】:2021-07-28 05:55:56
【问题描述】:

很抱歉问了一个可能已经被问了无数次的问题,但我找不到答案。我不知道为什么浏览器给我一个Invalid property valuemargin-left: 0 auto 但不知何故在左边添加了一点边距(这是一个渲染错误吗?)。 它实际上可以在没有-left 的情况下工作,但我不知道为什么。

完整的示例代码: http://jsfiddle.net/zw7n0h2j/5/

#wrapper {
  width:800px;
}

.figure {
    display: block;
    /* margin: 0; */
    margin-left: 0 auto;
    width: 50%; 
}

.figure img {
    width: 100%;
}

.figure figcaption { 
    width: 100%;
}
<div id="wrapper">
    <figure class="figure" >
        <img src="https://via.placeholder.com/350x150" />
        <figcaption>My caption</figcaption>
    </figure> 
</div>

【问题讨论】:

  • 可能是margin: 0 auto;?
  • 是的,这就是我在帖子中指出的。

标签: html css layout


【解决方案1】:

您可以使用 margin-left: 10px 在元素的左侧添加边距。

您还可以使用按顺时针顺序从顶部开始一直到左侧的速记边距属性。 [边距:右上左下]

如果要在元素左侧应用 10px 边距,可以使用margin: 0 0 0 10px

或者,如果你想使用简写的边距属性在元素的左右两边都应用 10px 的边距,你可以使用margin: 0 10px

有关更多信息,您可以参考 MDN 的 CSS 边距属性上的 this article

【讨论】:

    【解决方案2】:

    margin-left 不能有多个参数。不像margin。所以margin-left: 0 auto 是无效的,因为0auto 是两个单独的参数,而margin: 0 auto 是有效的,因为这是

    margin-top: 0;
    margin-bottom: 0;
    margin-left: auto;
    margin-right: auto;
    

    这些是按顺时针顺序应用的,所以如果你这样做margin: 12px, 13px, 14px, 15px;,边距将分别应用于顶部、右侧、底部和左侧的项目。

    阅读更多相关信息here

    【讨论】:

    • 谢谢。我会假设margin: 0 auto 也会垂直居中。我想以“边距”为中心不再比 flexbox 更受欢迎。
    • @Marcellvs 这仍然是绝对可能的。 Margin-left by design 只影响左边距,所以右边距不能通过相等的值来平衡它。不要忘记将此问题标记为已回答。
    猜你喜欢
    • 1970-01-01
    • 2017-08-03
    • 2017-12-18
    • 1970-01-01
    • 1970-01-01
    • 2011-09-19
    • 2020-01-05
    • 2011-01-27
    • 1970-01-01
    相关资源
    最近更新 更多