2009-07-17 50 views

回答

44

是的,他们是不同的。

即使你的风格跨度display: block你仍然不能把块级元素里面:

<div><p>correct</p></div> 
<span style="display: block;"><p>wrong</p></span> 

的(X)HTML仍然要服从(X)HTML DTD(哪一个你使用),不管CSS如何改变事情。

+2

除了需要的字符数稍少之外,在`div:`display:inline`上使用`span`还有什么好处? – JAB 2012-07-23 20:38:34

+1

OMG好的答案。 – VoidKing 2013-05-15 19:41:45

1

是的。他们可以包含不同的东西,并允许在不同的地方。

他们也将在不同的环境中呈现,其中CSS不可用(例如,在一些电子邮件系统)

12

这里就是它使一个真正的区别(用于合法的代码,至少)一个例子:

<a href='example.com'> 
    <span class='title' style='display:block;'>The title of the image is also a link</span> 
    <img src="example.com/someimage.jpg"/> 
</a> 

这让你让你跨越一个块级元素,使图像和跨度突出在一起的时候蒙上了一层阴影。

div不能嵌套在标签内。

+0

它将span _display_作为支持CSS的设备上的块,但它不会使其成为块级元素 - 它仍然是内联元素。在这种情况下,这实际上就是你想要的,因为块效应纯粹是为了视觉效果:-) – NickFitz 2009-07-17 09:00:29

3

A <div>是一个块级元素,它除了定义离散的内容块之外,没有其自己的特定语义。 A <范围>是一种内联元素,它除了定义内联内容的离散片段之外,没有其自己的特定语义。

你可以使用CSS将一个跨度显示作为一个块,但是绝对没有理由这样做编辑:除了纯粹的视觉效果,就像Gabriel演示的那样;我的意思是,你不应该使用CSS试图强制跨度在文档结构方面具有块级意义。此外,如果你这样做,你的内容可能对没有CSS的用户(比如盲人用户或搜索引擎)显得毫无意义。

如果是块,请使用div。如果它是内联内容的一部分,请使用跨度。请记住,CSS只是单纯的介绍;如果您的内容可用,您的标记仍然需要按照逻辑方式进行组织。

查看http://www.w3.org/TR/html401/struct/global.html#edef-DIV了解详情。

相关问题