带有显示的div:行内边距0自动不居中


72
<div style="display: inline-block; margin: 0 auto;">
    <input id="abc" type="button" value="button" />
</div>

我尝试使用上面的代码设置宽度等于其内容的宽度,然后将其居中放置空白:0 auto;

但这不适用于任何浏览器。有什么建议吗?

顺便说一句,当我设置width属性时,它可以正常工作。

<div style="width: 10em; margin: 0 auto;">
    <input id="abc" type="button" value="button" />
</div>

根据@Xander注释,如果没有宽度,DIV将扩展到其容器的100%。因此,“ margin:0 auto”不太可能显示任何效果,因为您需要的宽度小于100%。如果您只是尝试将按钮居中,为什么不将文本居中对齐呢?即。DIV样式中的“ text-align:center”。我认为INPUT标签自然是内联的,因此应将其自身置于DIV的中心>
jmbertucci 2012年

1
@Fozzyuw,无论宽度是否必要,当我们设置display:inline-block时,宽度都将等于其内容。
etlds 2012年

第二个示例有效,因为您删除了display: inline-block。当您再次添加它时,设置宽度无效。参见jsfiddle.net/anEvF
Olaf Dietsche 2013年

1
如果您偶然发现了该线程,但没有一个答案对您有用,请检查您的div是否未浮动。margin: autofloat。玩不好。
skibulk,2016年

Answers:


148

显示:表;也会将其定位在中心:

CSS:

  .button{
    display: table;
    margin: 0 auto;
    }

HTML:

<div class="button">
<input id="abc" type="button" value="button" />
< /div>

注意:使用内联样式是一种不好的做法。


11
@kapa我知道这是一条旧评论,但我可能会认为这是肯定的。:)
mawburn 2014年

52

由于您要求DIV为inline-block,因此text-align: center;可以找到答案。

<div style="text-align: center;">
<div style="display: inline-block; text-align: left;">
    <input id="abc" type="button" value="button" />
</div>
</div>

15
text-align: center;将div的内联内容居中,而不是div本身。
yatskevich 2012年

请原谅,忘记删除CSS。抱歉。
Rok Kralj

不,那不是我想要的。我想将div本身居中。
etlds 2012年

2
正是我所需要的。谢谢。
Duarte CunhaLeão13年

2
注意:此讨论已过时。此后,答案已被编辑为包括包装器div,以使内部原始div居中。这就是他想要的。
凯文·惠勒

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.