我最近一直在尝试找出何时适合使用inline-block
。它们似乎比单纯的block
元素更有用。事实上,一个inline-block
元素似乎可以做到与block
元素相同的任何事情,但需要一些额外的样式。
除了长度不同之外,具有display: inline-block; width: 100%;
的元素是否不同于具有display: block;
的元素?
通过阅读w3c推荐文档,我似乎找不到区别。
我最近一直在尝试找出何时适合使用inline-block
。它们似乎比单纯的block
元素更有用。事实上,一个inline-block
元素似乎可以做到与block
元素相同的任何事情,但需要一些额外的样式。
除了长度不同之外,具有display: inline-block; width: 100%;
的元素是否不同于具有display: block;
的元素?
通过阅读w3c推荐文档,我似乎找不到区别。
text-indent
、text-align
和vertical-align
等。display:inline-block
来轻松预防。请参见此问题,了解发生什么有趣的例子。
对于内联块,盒子模型与块级盒子有所不同。第10节包含所有细节,但主要区别如下:
如果没有width: 100%
声明,那么内联块将缩小以适应其内容。
因为内联块是内联流动的,所以无法使用自动左右边距使其居中。您需要使用text-align: center
。毫无疑问,它必须单独一行,没有其他文本在同一行上,但如果您设置了width: 100%
,那么这将不是问题。
内联块永远不会受到margin collapse的影响。
display: block
。一般来说,在两者之间做出决定时,你应该始终默认选择 display: block
,只有在有非常好的理由时才选择 display: inline-block
(不,阻止边距折叠不是我认为的一个好理由)。inline-block
被视为文本,所以周围的空白也被视为文本,并以它对于 block
元素不同的方式发挥作用。这经常会在试图使用 inline-block
进行布局时使人们感到困惑。这可能是使用 inline-block
的最大难点。width:100%
时。在这种情况下,您需要注意使用哪个盒模型,因为标准盒模型将边框、填充和边距放置在元素的宽度之外。因此,如果您使用边框、填充或边距,您的元素实际上会占用略微超过 100% 宽度的空间。block
和 inline-block
元素,但更容易在 inline-block
中发生,因为区别在于 block
通常不需要设置为 width:100%
,因为它默认扩展以填充宽度,而没有盒模型使其超出边缘。box-sizing:border-box
切换盒模型,使边框等放置在盒子内部,因此如果您要求 width:100%
,就会得到这样的结果。有关更多信息,请参见 MDN box-sizing 页面。