【问题标题】:What is the non-semantic difference between <p> and <div>?<p> 和 <div> 之间的非语义区别是什么?
【发布时间】:2015-02-04 05:04:21
【问题描述】:

它们都是块元素。那么为什么我可以在&lt;div&gt; 中嵌套&lt;div&gt;,但不能在&lt;p&gt; 中嵌套&lt;p&gt;? (好吧,我可以,但第二个&lt;p&gt; 只是开始一个新块。)

我已阅读有关 div tagp tag 的信息,但我没有看到任何解释它的内容。如果它在那里,那么它就会越过我的头。

为了记录,我不想嵌套p 标签,我只是想更多地了解基础知识。

【问题讨论】:

标签: css html


【解决方案1】:

根据您的链接(在 Permitted content 部分中),&lt;p&gt; 允许包含 phrasing content,而 &lt;div&gt; 允许包含 flow content(包括短语内容元素类型)。

实际上,浏览器通常也会对&lt;p&gt; 应用边距。

【讨论】:

  • 谢谢。 “允许的内容”是我一直在寻找的,现在我知道了。
【解决方案2】:

两者都是块元素,但&lt;p&gt; 标签预定义了一些边距/填充。您可以在任何现代浏览器中检查这两个元素并查看默认属性

有趣的是,以一致性的名义,所有元素都由诸如引导/样板 CSS 文件之类的东西重新定义,这些文件为所有元素提供相同的初始外观和感觉,因此我们不再需要猜测哪些标签具有哪些默认属性。为了我们的理智,哪一种违背了原始的 HTML 规范

【讨论】:

  • 您已经忽略了问题的关键部分,IMO,即“那么为什么我可以在 &lt;div&gt; 内嵌套 &lt;div&gt;,但不能在 &lt;p&gt; 内嵌套&lt;p&gt;?”
  • 是的 - 我做到了,因为除了 html 编辑器会抱怨嵌套之外,没有重要的现实世界差异。 OP 已经知道不要这样做 - 那么还剩下什么?
  • 嗯,不仅 HTML 编辑器会抱怨,浏览器也会以意想不到的方式呈现它。 OP 想知道为什么,我通常更乐意与那些问为什么的程序员一起工作,而不是盲目地去“你就是不能,好吗?”
  • 同意,但有一点需要注意,请自行找出原因。我不需要一个程序员浪费一周的开发时间来找出原因,尤其是当他们已经知道不这样做的时候。对 OP 没有冒犯-您在学习原因方面是绝对正确的,SO 是这样做的理想场所。请注意项目截止日期
猜你喜欢
  • 2016-05-01
  • 2011-01-14
  • 2017-03-28
  • 2020-07-31
  • 1970-01-01
  • 2011-03-11
  • 1970-01-01
  • 2019-12-14
  • 1970-01-01
相关资源
最近更新 更多