DIV as-is与带显示的SPAN之间的区别:块

时间:2009-07-17 08:50:51

标签: html

<div/>以任何方式与<span style="display:block" />不同吗?

它们渲染得很好。这两者之间有什么语义差异?

4 个答案:

答案 0 :(得分:50)

是的,他们是不同的。

即使您使用display: block设置范围,您仍然无法在其中放置块级元素:

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

(X)HTML仍然必须服从(X)HTML DTD(无论你使用哪一个),无论CSS如何改变。

答案 1 :(得分:13)

这是一个真正不同的例子(至少对于有效代码):

<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无法嵌套在标签内。

答案 2 :(得分:3)

A&lt; div&gt;是一个块级元素,除了定义一个离散的内容块之外,它没有自己的特定语义。一个&lt; span&gt;是一个内联元素,除了定义内联内容的离散段之外,它没有自己的特定语义。

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

如果是块,请使用div。如果它是内联内容的一部分,请使用范围。请记住,CSS仅仅是关于演示;如果您的内容可用,您的标记仍需要以合理的方式构建。

有关详细信息,请参阅http://www.w3.org/TR/html401/struct/global.html#edef-DIV

答案 3 :(得分:1)

是。它们可以包含不同的东西,允许在不同的地方使用。

在CSS不可用的环境中(例如在某些电子邮件系统中),它们也会以不同的方式呈现