What is the difference between block and inline-block with width: 100%?
我最近一直在尝试弄清楚何时使用
我通过阅读w3c建议来研究这个主题。 我似乎找不到任何区别。
您说的很正确:"内联块元素似乎可以执行块元素可以做的任何事情,但是要有一些额外的样式。"这主要是由于两者的共同点是它们都是块容器。
但是,有一个陷阱。
块框参与块格式化上下文,内联块参与内联格式化上下文(尽管它为后代建立了块格式化上下文,就像块框在某些条件下一样)。请参阅第9.4节。基本上,这意味着将内联块当作文本对待,这又意味着通常应用于文本的大多数属性也将应用于内联块。这些属性包括
这可能会导致不希望出现的副作用,您可以通过首先不使用
嵌入式块的盒模型也与块盒的盒模型有所不同。第10节包含所有细节,但主要区别在于:
-
您可能会怀疑,如果没有
width: 100% 声明,则内联块将缩小以适合其内容。 -
因为内联块是内联流动的,所以您不能使用自动左,右页边距将其居中。您改为使用
text-align: center 。不用说,它必须位于自己的行上,并且同一行上不能包含任何文本,但是如果您设置width: 100% ,那么这将不是问题。 -
内联块永远不会受到边距崩溃的影响。
如果尝试创建基于块的布局,则应使用
我会回应@BoltClock所说的一切;他有很多优点。
我还要补充一点,因为
另一个更微妙的点特别适用于您的情况,即设置
这一点同样适用于
为避免这种情况,您可以使用