看起来,在所有情况下,其他元素更适合添加语义价值,使成为纯粹的布局元素。这是真的吗?
Span可以用于添加超出HTML范围的语义含义。这可以通过使用标识某些属性的类来实现。例如,如果您正在编写科幻小说,您可以使用span来识别虚构词汇,因为您可能希望以不同的格式进行排版,或者因为您可能希望拼写检查器忽略它们:
然后巫师召唤了<span class="wizardword">gravenwist</span>并命令它攻击正在接近的军队。<span class="wizardword">gavenwist</span>抵抗了,但是巫师的<span class="wizardword">wistwand</span>太强大了。
这可能呈现为
然后巫师召唤了gravenwist并命令它攻击正在接近的军队。gavenwist抵抗了,但是巫师的wistwand太强大了。
另一个很好的例子是微格式,它允许在HTML中创建任意结构:
<span class="tel">
<span class="type">home</span>:
<span class="value">+1.415.555.1212</span>
</span>
与非常有用的一个功能是标记语言的变化。例如,
<p>Welcome to Audi UK, <span lang="de">Vorsprung durch Technik</span>.</p>
支持多语言的屏幕阅读器可以利用这个功能。
因此,它们不是为了表现形式而存在的,只是通用的。 实际上,如果使用具有语义含义的类名称(例如“拼写错误”而不是“粗红色文本”) ,则很少使用标签来进行表示性的呈现。
<div class="name">
<span class="firstname">John</span>
<span class="lastname">Doe</span>
</div>
完全取决于您想要表达的内容。如果标记名字对您具有语义价值(无论是仅仅为了让 CSS 有钩子来格式化名字,还是使用某些脚本语言提取它们),那么您可以使用 span。
当我想让JavaScript解析元素并在标签内插入某些值时,我经常使用SPAN,例如:
<span datafield="firstname"></span>
稍后将插入一个值,因此在这种情况下它确实具有意义,尽管只有我决定给它的意义。 在这种情况下,span没有其他影响布局的事实是理想的。
class
属性携带语义信息。这被微格式所使用。
span
的唯一目的是承载在 HTML 中无法表达的标记,例如在印刷出版行业存在数百年的 span style="dropCap"
,总是应用于项(文章等)的第一个字符 - 不会引起断行(或任何更大的间隔)。span
成为纯粹的布局元素。这是真的吗?span
的唯一真正价值在于它在语义上是中立的。也就是说,与例如 p
不同,当您将其用作承载其他标记的元素时,它不会执行任何可能导致您不想要的效果。还有像上面的 span style="dropCap"
这样的时候,您不想要任何其他效果。我认为他在问div和span之间的区别,实际上除了默认行为之外,没有什么区别。
这是一种惯例。在使用样式时,div
通常用于划分内容的部分,而span
用于划分内联文本。您可以随时在任何地方使用div
或span
,但是将它们视为不同的有帮助,即使只是按照惯例。