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