<p>
、<div>
和<span>
之间有什么区别?
它们可以互换使用吗?
因为我面临的问题是,对于<span>
裕度不起作用,但对于<div>
和<p>
,它起作用。。
p
和div
元素是块级元素,其中span
是内联元素,因此span上的裕度不起作用。或者,您可以使用CSS display: block;
使span
成为块级元素,或者对于span
,我更喜欢display: inline-block;
除此之外,这些元素具有特定的语义,div
更好地用于具有不同嵌套元素的内容块,p
用于段落,而span
只是一个空元素,因此请记住SEO,您需要使用正确的标签来表示正确的东西,因此,例如,在div
元素中包装文本将比在p
中包装文本更不具有语义
<p>
应该包含文本段落,<div>
使用分区来布局页面,<span>
允许标记的样式略有不同,例如在<p>
中
这就是它们在语义上的使用方式,但是使用CSS
对它们进行样式设置取决于您。
作为一名网络开发人员,我忍不住觉得所有这些指导方针在2015年都极具误导性。
当然;p〃;标签一度是为段落使用而设计的。。。但在我100%的应用程序、设计和日常的一般开发中,我们只遇到了";p〃;标签在当今的互联网上,它没有任何好处。
我会说是的,";p〃;是一个描述性的元素,因此,如果这就是它所做的全部"描述某事";,我完全支持……但它不仅仅是描述内容,它直接改变了内容,虽然这本身已经是一个限制,但它并不是它所能做的,它也限制了内容。当涉及到网络开发时,为什么任何心智正常的人都会有目的地接受一个限制性的构建块,我无法理解。从设计的角度来看,这是没有意义的。从结构的角度来看,这是没有意义的。从DOM操作PERIOD的任何一个角度来看,这都没有意义。
我们一起停止使用";p〃;标签,除非我们绝对被迫(例如,客户端WordPress后期实现,诸如此类的愚蠢事情(。没有任何借口可以解释为什么我们不能用命名良好的类和ID来描述几乎所有的东西,所以我们认为没有任何理由必须向";标准";这并没有增加任何好处,事实上,每一块拼图都是HINDER。";p〃;标签对开发人员、最终用户和现代搜索引擎都没有帮助。简而言之"p〃;标签在即使是极为复杂的实现中也几乎是不受欢迎的(而且有充分的理由(,不要让这些标准的nazi的评论控制你如何显示你的内容!
即使在这个网站上,一个以开发者为核心的网站,在其自己页面的顶部也有一个小的插件,可以使用";p〃;标记,因为它包含了足够的文本,可以运行到第二行,但由于几乎无限多的原因,它完全被捕获在DIV中(并且只有一个DIV,而不是一个DIV->p(。。。最重要的是,今天;p〃;SUCKS与从DIV创建的任何描述良好的块相比;p〃;具有非常描述性的id=";"简介";。
来自堆栈溢出:
<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>
是的,我很欣赏我们目前的网络标准,像<span>
这样的东西仍然有它的位置,甚至提供了用<div>
容器无法完成的一些现代浏览器的功能,但这一点尤其重要;p〃;,作为重组和现代化HTML的一部分。。。应该留在坟墓里。。。这是一代网络,段落甚至不再是永远的段落。。。方块真的变了。。。这完全是过时和不切实际的。
正如其他人所回答的… 分类为流内容的元素只能在期望流内容的地方使用,分类为短语内容是流内容,因此短语元素也可以用于任何期望流内容的地方。规格提供了更详细的信息。 所有短语元素,如 虽然 现在踢球者来了。这些语义规范与元素的显示方式无关。因此,如果div
和p
是"块元素"(现在重新定义为流内容(,span
是"内联元素"(短语内容strong
和em
,只能包含其他短语元素:例如,不能将table
放在cite
中大多数流内容(如div
和li
(可以包含所有类型的流内容(以及短语内容(,但也有少数例外:p
、pre
和th
是非短语流内容("块元素"(的示例,它们只能包含短语内容("内联元素"(。当然,也有正常的元素限制,如dl
和table
只允许包含某些元素。div
和p
都是非短语流内容,但div
可以包含其他流内容子级(包括更多的div
和p
(。另一方面,p
可以仅包含短语内容子级。这意味着您不能将div
放在p
中,即使两者都是非短语流元素。span
中有一个div
,即使CSS中有span {display: block;}
和div {display: inline;}
,也会出现验证错误。
<p>
和<div>
默认为块元素。CCD_ 54是一个内联元素。
块图元在浏览器中以新行开始和结束,而内联图元则不以新行结束。"内联"表示它们是当前行的一部分。
在当今复杂的网络设计中,这些区别的目的并不那么明显,但如果你回想HTML的早期(这些标签的来源(,文档基本上是用图像修饰的文本,那么区别就会变得更清楚。
无论哪种方式,使用CSS,基本上都可以覆盖标记的任何属性。因此,如果你想让<span>
表现得像<div>
或<p>
,那么你所需要做的就是添加:
span
{
display: block;
}
使用此代码,您将能够设置垂直边距和水平边距。
1(div元素用于描述数据容器。div标签可以包含其他元素--div是块级
2( p元素是用来描述一段内容的---para是块级
3( span元素通常用于HTML的一小部分---跨度为内联
4( 块级元素在新行上开始,内联元素没有。
5( 大多数浏览器在任意两个块级元素之间插入一条空行。例如:段落和段落之间、标题和段落之间以及两个标题之间、段落和列表之间、列表和表格之间将有空行,etc
我更认为,p
和div
元素在另一侧是块级元素,span
是内联元素。但是当你在代码中写p
时,它会占用顶部和底部的空间,但div
的行为不是这样的。看看JS fiddle:上的这个实验
https://jsfiddle.net/arifkarim/9wcef1c3/