<p>和<div>之间有什么区别?

它们可以互换使用吗?应用是什么?


当前回答

之前的代码是

<p class='item'><span class='name'>*Scrambled eggs on crusty Italian ciabatta and bruschetta tomato</span><span class='price'>$12.50</span></p>

所以我要把它改成

<div class='item'><span class='name'>*Scrambled eggs on crusty Italian ciabatta and bruschetta tomato</span><span class='price'>$12.50</span></div>

这很容易解决。上面代码的CSS是

.item {
    position: relative;
    border: 1px solid green;
    height: 30px;
}

.item .name {
    position: absolute;
    top: 0px;
    left: 0px;
}

.item .price {
    position: absolute;
    right: 0px;
    bottom: 0px;
}

所以div标签可以包含其他元素。P不应该被强迫这么做。

其他回答

<p>表示段落,具有语义意义。

<div>只是一个用于其他内容的块容器。

任何可以在<p>中出现的东西都可以在<div>中出现,但反过来就不对了。<div>标签可以有块级元素作为子元素。<p>元素不能。

让我们看一下HTML DTD。

<!实体% inline "#PCDATA | %fontstyle;| %短语;| %特殊;| % formctrl;" > <!实体%块 "P | %标题;| %列表;| %格式化;| dl | div | noscript | Blockquote | form | hr | table | fieldset | address“> . <!实体%流量"%块;| %内联;" > <!元素DIV -- (%flow;)*——通用语言/样式容器——> <!ELEMENT P - O (%inline;)*——段落——>

除了已经给出的答案之外,还有一个主要区别:

Div可以包含其他Div元素 P不能包含另一个P元素

这意味着div可以被堆叠,而p不能!

<p>代表一个段落,<div>代表一个“分割”,我认为主要的区别是div在语义上是“无意义的”,其中<p>应该代表与文本本身有关的东西。

例如,你不会想要有嵌套的<p>s,因为这不会有太多的语义意义(除了在引用的意义上),而人们使用嵌套的<div>s进行页面布局。

根据维基百科

在HTML中,span和div元素是 用于文档的某些部分不能使用的地方 被他人从语义上描述 HTML元素。

它们有语义上的区别——<div>元素被设计用来描述一个数据容器,而<p>元素被设计用来描述一段内容。

语义决定了一切。HTML是一种标记语言,这意味着它被设计成以一种对标记的消费者有意义的方式“标记”内容。大多数开发人员认为文档的语义是浏览器应用于这些元素的默认样式和呈现,但事实并非如此。

您选择用来标记内容的元素应该描述内容。不要根据文档的外观来标记它,而是根据它是什么来标记它。

如果你只是为了布局而需要一个泛型容器,那么使用<div>。如果你需要一个元素来描述一段内容,那么使用<p>。

注意:重要的是要理解<div>和<p>都是块级元素,这意味着大多数浏览器将以类似的方式对待它们。

之前的代码是

<p class='item'><span class='name'>*Scrambled eggs on crusty Italian ciabatta and bruschetta tomato</span><span class='price'>$12.50</span></p>

所以我要把它改成

<div class='item'><span class='name'>*Scrambled eggs on crusty Italian ciabatta and bruschetta tomato</span><span class='price'>$12.50</span></div>

这很容易解决。上面代码的CSS是

.item {
    position: relative;
    border: 1px solid green;
    height: 30px;
}

.item .name {
    position: absolute;
    top: 0px;
    left: 0px;
}

.item .price {
    position: absolute;
    right: 0px;
    bottom: 0px;
}

所以div标签可以包含其他元素。P不应该被强迫这么做。