是否有任何HTML元素作为典型的内联块存在?

时间:2013-05-10 10:38:44

标签: html css html5

div是典型的块级元素,span是内联对应元素。它们是该显示类型的最简单形式,没有其他属性。在很多情况下,我会给他们任何一种风格:

display: inline-block;

这使他们表现得非常方便。对于div,它意味着可以轻松地坐在彼此旁边的盒子,同时保持其定义的宽度和高度。对于span,我可以使用它来制作彩色矩形。 inline-block显示对于很多事情都很有用,但是我从未见过以inline-block开头而没有其他任何事情的元素。

图像(img)是,但它们显然适合与div相同的东西,它们具有那种风格,但它们实现了不同的目的。

那么有一个我不知道的元素是典型的inline-block,还是遗漏了?

如果没有,为什么? inline-block的用法很多,所以看起来应该有一些元素采用这种基本形式。

3 个答案:

答案 0 :(得分:6)

我能想到的唯一具有内嵌外观但允许设置widthheight的元素是:

  • img
  • input
  • textarea
  • select
  • button

此处唯一可以采用HTML内容的元素是button元素;这不是button的理想用法,因为它旨在成为用户可能/应该与之交互的元素;而不仅仅是一个容器元素。

虽然你可能对这样一个元素有多种用途,但是没有令人信服的理由,因为display属性可能很容易被改变,W3C或任何其他权威机构应该明确定义一个;特别是考虑到inlineinline-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中。 (请查看每个标准中的参考部分。)

blockinline-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?