由于span可以有display:block,我应该何时使用它而不是div?
答案 0 :(得分:5)
技术差异是div
是块级元素,而span
是用于文本的内联元素。虽然跨度可以显示并且行为类似于块元素,但它们本质上仍然被视为内联元素,因此不能将块元素包含为有效的HTML。
div
可以包含span
,但即使您将span
或div
应用于所有display: block
,display: inline
也无法有效地包含div
。
正如其他人所提到的,您使用span
作为构建块来定义页面的布局和结构,同时使用{{1}}来包装部分文本,用于样式或结构目的。
HTML规范的一些链接:
div
- 通用流量容器
允许的内容
零个或多个样式元素,后跟流内容。
...其中流内容由短语内容和许多块级元素(流元素)组成。
span
- 通用范围
允许的内容
短语内容。
...其中措辞内容由文本和内联元素组成。
答案 1 :(得分:2)
从理论上讲,你可以设计一个跨度来做与div相同的事情。但是,再一次,您可以在h1's
中包围所有文本,并将样式更改为正常。查看@BoltClock答案,因为他解释说你不能在一个范围内有一个div并保持代码有效性。
答案 2 :(得分:1)
从技术上讲,你可以让<span />
做与<div />
完全相同的事情。这都是关于语义的。
您是否正在呈现要标记的页面部分,因为它在页面上是自己的部门?然后使用<div />
。
您是否在页面上包含一些并不真正构成完整分区的单个块?然后使用<span />
(请记住BoltClock提到的关于有效HTML的警告)。
但请记住,您可以对任何其他HTML标记执行相同操作。如果没有其他语义上优越的选择,<div />
和<span />
应该只作为最后的手段使用。
简而言之,构建语义HTML可以使您的标记更易于阅读,并且您的意图更容易理解。使用最有意义的标签,然后使用CSS进入城镇,以他们希望的方式呈现它们。
答案 3 :(得分:0)
他们是不同的。要么将属性display:block添加到跨度中,就不能将块级元素放入其中。
答案 4 :(得分:0)
Div
被用作页面的构建块。
其中span
用于更改元素的某些部分。
示例:
<div class="left-content">
</div>
<div class="right-content">
</div>
将页面拆分为两个部分
<p>This text is <span class="red">red</span></p>
您可以将span
设置为阻止并像div一样使用它。
然而,这不是该元素的意思。
您也可以使用表格来设计您的页面,但是这些表格不再适用于那些表格的用途:)
答案 5 :(得分:0)
如果您关心标准一致性,您还应该考虑<div>
内允许的<span>
内允许的许多元素,例如W3C Validator如果您有{{{}}}将会出错{1}}内的{1}}。