我知道在元素上设置margin: 0 auto;
用于居中(左 - 右)。但是,我知道元素及其父元素必须满足某些标准才能使自动余量发挥作用,而且我似乎永远无法获得正确的魔力。
所以我的问题很简单:必须在元素及其父元素上设置哪些CSS属性才能使margin: 0 auto;
左右居中于孩子?
答案 0 :(得分:261)
脱离我的头顶:
display: block
或display: table
脱离其他人的头脑:
width
必须不是auto
2 请注意,这些条件的所有必须为中心元素才能生效。
1 这有一个例外:如果你的固定元素或绝对定位元素有left: 0; right: 0
,it will center with auto margins。
2 从技术上讲,margin: 0 auto
可以使用自动宽度,但自动宽度优先于自动边距,因此自动边距归零,使它看起来好像“不起作用”。
答案 1 :(得分:18)
在我的头顶,它需要一个width
。您需要指定要居中的容器的宽度(而不是父宽度)。
答案 2 :(得分:6)
完整的CSS规则:
display: block
和width
非自动)或display: table
float: none
position: relative
答案 3 :(得分:3)
如果元素不是块元素,请从我的头顶开始 - 这样做。
然后给它一个宽度。
答案 4 :(得分:2)
离开我的猫头顶部,确保您尝试居中的div
未设置为width: 100%
。
如果是,那么在子div上设置的规则就是重要的。
答案 5 :(得分:1)
请转到我创建jsFiddle的快速示例。希望它很容易理解。您可以使用wrapper
div与网站的宽度居中对齐。你必须放width
的原因是浏览器知道你不会采用流畅的布局。
答案 6 :(得分:1)
它也适用于display:table - 在这种情况下是一个有用的显示属性,因为它不需要设置宽度。 (我知道这篇文章已有5年历史了,但它仍与路人有关;)
答案 7 :(得分: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;
答案 8 :(得分:0)
如果您的父元素没有固定宽度,则让带有 display: flex
的父元素对我有用。
答案 9 :(得分:-1)
对于刚刚遇到此问题并且无法修复margin: 0 auto
的任何人,这是我发现您可能会发现的有用内容:table
元素没有指定宽度必须有display: table
和 not display: block
才能使margin: auto
工作。这对于某些人可能是显而易见的,因为display: block
和默认值width
的组合将提供一个表,该表会扩展以填充其容器,但是如果您想要取其“自然”宽度 居中,则需要display: table