1

我正在考虑使用<span>标签将一组任意元素组合在一起,但我不希望它对文档的结构产生任何视觉影响。

我想使用该标签稍后以某种方式使用 JavaScript 操作其中的元素集,例如检测鼠标是否进入或离开该区域等。

我的问题是是否存在跨度标签的存在会破坏文档流的情况,使其中的元素或它周围的元素的行为与不存在时不同。

当然,我知道 DOM 上存在一个额外的节点可能会破坏一些不期望跨度的 CSS 选择器,而且我也知道设置跨度的样式会导致布局发生变化(例如,如果我添加了边框我可能会导致元素换行到下一行等)。但除此之外,span 标签是中性的吗?如果不是,我应该如何确定在什么情况下不是?

提前致谢!

- 编辑 -

我倾向于忘记将块级元素放在像 span 这样的内联元素中是错误的,所以我不能使用 span 按照我的意图包装所有内容。

所以,如果我要分组的一个或多个元素是块级的,我应该使用 div 代替吗?

4

2 回答 2

2

<span>元素被定义为内联(文本级)元素。否则,它在语义上是空的并且布局中立。

根据 HTML 语法,<span>元素不能包含块元素,例如<div>. 如果您违反了这一点,则没有关于浏览器不应该做什么的规范。当您可以使用该<div>元素时,使用它听起来毫无意义。它被定义为一个块元素,这意味着在默认情况下渲染它从新行开始,并且它之后的任何内容都在新行开始(但此行为不会生成空行)。否则,它在语义上是空的并且布局中立。

于 2012-09-15T17:21:21.940 回答
0

直接来自http://www.w3.org/wiki/HTML/Elements/span

元素本身没有任何意义,但与全局属性(例如类、语言或目录)一起使用时会很有用。它代表它的孩子。

于 2012-09-15T10:39:36.500 回答