div
是典型的块级元素,span
是内联对应元素。它们是该显示类型的最简单形式,没有其他属性。在很多情况下,我会给他们任何一种风格:
display: inline-block;
这使他们表现得非常方便。对于div
,它意味着可以轻松地坐在彼此旁边的盒子,同时保持其定义的宽度和高度。对于span
,我可以使用它来制作彩色矩形。 inline-block
显示对于很多事情都很有用,但是我从未见过以inline-block
开头而没有其他任何事情的元素。
图像(img
)是,但它们显然不适合与div
相同的东西,它们具有那种风格,但它们实现了不同的目的。
那么有一个我不知道的元素是典型的inline-block
,还是遗漏了?
如果没有,为什么? inline-block
的用法很多,所以看起来应该有一些元素采用这种基本形式。
答案 0 :(得分:6)
我能想到的唯一具有内嵌外观但允许设置width
和height
的元素是:
img
,input
,textarea
select
和button
此处唯一可以采用HTML内容的元素是button
元素;这不是button
的理想用法,因为它旨在成为用户可能/应该与之交互的元素;而不仅仅是一个容器元素。
虽然你可能对这样一个元素有多种用途,但是没有令人信服的理由,因为display
属性可能很容易被改变,W3C或任何其他权威机构应该明确定义一个;特别是考虑到inline
和inline-block
之间的唯一区别是分配尺寸和margin
的能力。
答案 1 :(得分:6)
没有这样的元素,并且有一些很好的理由为什么不这样做。
inline-block
在当代网页设计中有多种用途。但它不是original design的一部分,the wrong markup仅包含块和内联元素。相反,它来自NSCA Mosaic添加的<img>
。 (使用fix the problems with img并帮助击败原始的“响应式设计”。我认为我们刚刚开始HTML4)。
在时间轴的下方,inline-block
仍然不是IE4或5或任何版本的Netscape的一部分。它不是早期HTML4时代的一部分。因此,我们不希望在该版本的标准中找到您的假设元素。 inline-block
仅出现在is affected by whitespace in the markup之后的CSS2中。 (请查看每个标准中的参考部分。)
与block
,inline-block
"flexbox"不同。它隐含在名称中,它是您在某些文本中间查看<img>
时所期望的(也就是将wordprocessor对象锚定为“字符”)。但是,除了它的起源之外,依赖于空格的标记很快变得非常麻烦。我不希望W3C HTML5在新元素中加入它。
指定它肯定会涉及关于“语义”,内容分离和演示等的争论(以及它的名称:)。如果默认呈现使空白显着 - 那不是该元素语义的一部分吗?考虑使用图像来表示单词 - 或单词的单个字母(使用适当的替代文字)。这说明在这个元素周围存在空白(或不存在)将具有语义上的重要性,就像存在空白的分类词在语义上有意义一样。这对我来说似乎是个大问题。
inline-block
通常被宣传为在任何地方使用float
的现代替代方案。但两者都不是真正合适的。这就是为什么CSS3将标准化新的布局模式:"grid"和{{3}},以支持具有真实,干净标记的现代响应式设计。没有虚拟标记(或虚拟生成的内容)。没有黑客依赖空白。
答案 2 :(得分:0)
默认情况下,img标签是内联块:
https://developer.mozilla.org/en-US/docs/Web/HTML/Element/Img
修改:您可以查看此问题:Is <img> element block level or inline level?