<p>
,<div>
和<span>
之间有什么区别?
它们可以互换使用吗?
因为我遇到了问题,因为<span>
保证金不起作用,但<div>
和<p>
正在运作..
答案 0 :(得分:41)
p
和div
元素是块级元素,其中span
是内联元素,因此跨度上的边距不起作用。或者,您可以使用CSS span
或display: block;
我希望span
display: inline-block;
成为块级元素
除此之外,这些元素具有特定的语义含义,div
更适合于具有不同嵌套元素的内容块,p
用于段落,span
是除了一个空元素,因此记住SEO,你需要使用正确的标记来做正确的事情,所以例如将文本包装在div
元素中将比将其包含在p
<中更少语义/ p>
答案 1 :(得分:17)
<p>
应该包含文本的段落,<div>
是使用分区布局页面而<span>
允许标记的样式略有不同,例如{{1} }}
这是它们应该在语义上使用的方式,但使用<p>
的样式取决于你。
答案 2 :(得分:9)
作为一名网络开发人员,我不禁觉得所有这些指导方针在2015年都是令人难以置信的误导。
当然,一个“p”标签在某一点设计用于段落使用......但在我的应用程序,设计和日常开发的100%中,我们只遇到了限制“p”标签......它在今天的互联网上没有任何好处。
我会说是的,“p”是一个描述性元素,因此,如果这就是它所做的一切; “描述一些东西”,我会全力以赴......但它不只是描述内容,它直接改变内容,虽然已经是一个限制本身,但并不是全部,它也限制内容。为什么任何心智正常的人都会有目的地拥抱一个限制性的构建模块,当涉及到Web开发时,我无法理解。从设计的角度来看,它没有意义。从结构的角度来看,它没有意义。从任何DOM操作PERIOD,它没有意义。
我们一起停止使用“p”标签,除非我们绝对被迫(例如,客户端文字发布后实施,愚蠢的事情)。没有理由为什么我们不能用名称很好的类和ID来描述几乎所有东西,所以我们看到没有理由不得不屈服于没有任何好处的“标准”,并且实际上是为了解决每一个难题。 “p”标签对开发人员,最终用户和现代搜索引擎没有帮助。简而言之......“p”标签在即使是非常复杂的实现中也被弃用了(并且有很好的理由),不要让这些标准纳粹的评论控制你如何展示你的内容!
即使在这个网站上,一个面向开发人员的网站,在它自己的页面上有一个小小的弹出式文件,可以使用“p”标签,因为它包含足够的文本来运行到了第二行,但完全被DIV(并且只有div,而不是div - > p)捕获了几乎无数的原因...最重要的是今天,“p”SUCKS与任何描述得很好从DIV创建的块,就像一个描述性很强的描述id =“blurb”的段落“p”一样(更多...我说)。
来自Stackoverflow:
<div id="blurb">Stack Overflow is a question and answer site for professional and enthusiast programmers. It's 100% free, no registration required.</div>
我说
<p>I suck</p>
并且万岁
<div class="p">I rock</div>
是的,我确实很欣赏我们当前的网络标准,并且仍然有自己的位置,甚至提供了使用容器无法完成的一些现代浏览器的功能,但这只是特别是这个,破碎的元素“p”,作为一个重组和现代化的HTML的一部分...应该留在它所属的坟墓......这是一代网络,其中段落甚至不再是段落了。这些街区实际上发生了变化......它只是过时而且不切实际。
答案 3 :(得分:7)
正如其他人回答的那样...... div
和p
是“块元素”(现在重新定义为流量内容),span
是“内联元素” (短语内容)。是的,您可以更改这些元素的默认表示,但“流”与“阻止”,“短语”与“内联”之间存在差异。
分类为流内容的元素只能在预期流量内容的情况下使用,并且可以在期望短语内容的情况下使用分类为措辞内容的元素。由于所有措辞内容都是流内容,因此在预期流内容的任何地方也可以使用措辞元素。 The specs provide more detailed info
所有短语元素(例如strong
和em
)只能 包含其他短语元素:您不能在{{1}内放置table
1}}例如。 大多数流媒体内容(例如cite
和div
)可以包含所有类型的流内容(以及短语内容),但也有一些例外情况:li
,p
和pre
是非短语流内容(“块元素”)的示例,它们仅包含短语内容(“内联元素”)。当然还有正常的元素限制,例如th
和dl
只允许包含某些元素。
虽然table
和div
都是非短语流内容,但p
可以包含其他流内容子项(包括更多div
和div
S)。另一方面,p
可能只包含措辞内容的子项。这意味着您无法将p
置于div
内,即使两者都是非措辞流元素。
现在这里是踢球者。这些语义规范与元素的显示方式无关。因此,如果p
中有div
,即使您的CSS中有span
和span {display: block;}
,也会收到验证错误。
答案 4 :(得分:3)
<p>
和<div>
是块元素。 <span>
是内联元素。
块元素在浏览器中以新行开头和结尾,而内联元素则不然。 “内联”意味着它们是当前行的一部分。
对于今天复杂的网页设计,这些区别的目的不那么明显,但如果你回想一下HTML的早期(这些标签来自哪里)文档基本上是用图像修饰的文本,区别就会变得更加清晰。
无论哪种方式,使用CSS,您基本上都可以覆盖标记的任何属性。因此,如果您希望<span>
的行为类似于<div>
或<p>
,那么您需要做的就是添加:
span
{
display: block;
}
使用此代码,您可以设置垂直边距和水平边距。
答案 5 :(得分:1)
1)div元素用于描述数据容器。 div标签可以包含其他元素--- div是Block Level
2)p元素旨在描述一段内容--- para是Block Level
3)span元素通常用于一小部分HTML .--- span是Inline
4)块级元素从新行开始, 内联元素不会。
5)大多数浏览器在任意两个块级元素之间插入一个空行。 例如:para和para之间以及header和para之间以及两个标题之间,段落和列表之间,列表和表格之间会有空行, 等
答案 6 :(得分:0)
我更想到,p
和div
元素是另一方的块级元素,span
是内联元素。但是当你在代码中写p
时,它会占用空间的顶部和底部,但div
行为不是那样的。在JS小提琴上查看这个实验: