div和span与display:block有什么区别?

时间:2011-07-25 19:49:37

标签: html css

由于span可以有display:block,我应该何时使用它而不是div?

6 个答案:

答案 0 :(得分:5)

技术差异是div是块级元素,而span是用于文本的内联元素。虽然跨度可以显示并且行为类似于块元素,但它们本质上仍然被视为内联元素,因此不能将块元素包含为有效的HTML。

div可以包含span,但即使您将spandiv应用于所有display: blockdisplay: 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}}。