8

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

display: inline-block;

这使得它们的行为非常方便。因为div这意味着盒子可以很容易地彼此相邻放置,同时保持它们定义的宽度和高度。因为span我可以用它来制作彩色矩形。inline-block显示器非常适合做很多事情,但我从未见过一个元素以 a 开头而inline-block没有其他任何事情发生。

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

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

如果不是,为什么?的用途inline-block很多,所以似乎应该有一些元素采用这种基本形式。

4

3 回答 3

6

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

  • img,
  • input,
  • textarea
  • select, 和
  • button

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

display虽然您可能对这样一个元素有多种用途,但考虑到该属性可能很容易更改,没有令人信服的理由表明 W3C 或任何其他权威机构应该明确定义一个;特别是考虑到 和 之间的唯一区别是分配维度和 的inline能力。inline-blockmargin

于 2013-05-10T11:05:07.010 回答
6

没有这样的元素,并且有一些很好的理由为什么不这样做。

inline-block在当代网页设计中有多种用途。但是它不是原始设计的一部分,它只包括块和内联元素。相反,它源自<img>NSCA Mosaic 添加的内容。(它使用了错误的标记并帮助破坏了最初的“响应式设计”。我认为我们才刚刚开始解决 img 的问题)。

再往下看,inline-block仍然不是 IE4 或 5 或任何版本的 Netscape 的一部分。它不是早期 HTML4 时代的一部分。因此,我们不会期望在该版本的标准中找到您的假设元素。 inline-block仅出现在HTML4之后的 CSS2 中。(查看每个标准中的参考部分)。

不像blockinline-block 受标记中的空白影响。它是由名称所暗示的,这也是您在<img>某些文本中间看到的内容(也就是锚定“作为字符”的字处理器对象)。但是除了它的起源之外,依赖于空格的标记很快就变得非常麻烦。我不希望 W3C HTML5 在新元素中体现这一点。

指定它肯定会涉及关于“语义”、内容和表示分离等的争论(以及如何称呼它:)。如果默认渲染使空白很重要 - 这不是该元素语义的一部分吗?考虑使用图像来表示单词 - 或单词的单个字母(带有适当的替代文本)。这说明在这个元素周围存在(或不存在)空白在语义上是有意义的,就像存在的空白分隔词在语义上是重要的一样。这对我来说似乎是个大问题。

inline-block通常被宣传为float无处不在的现代替代品。但两者都不是真正合适的。这就是为什么 CSS3 将标准化新的布局模式:“flexbox”“grid”,以支持具有真正、干净标记的现代响应式设计。没有虚拟标记(或虚拟生成的内容)。没有围绕空白依赖的黑客攻击。

于 2013-05-10T12:17:33.033 回答
0

img 标签默认为 inline-block:

https://developer.mozilla.org/en-US/docs/Web/HTML/Element/Img

编辑:您可以检查这个 SO 问题:<img> 元素是块级还是内联级?

于 2013-05-10T10:42:05.023 回答