Html 将嵌套在

Html 将嵌套在,html,css,Html,Css,中会创建两个段落。为什么? 我注意到浏览器在解释以下代码时有一种奇怪的行为: <h2>Maecenas aliquet lorem id urna vehicula</h2> <p>&nbsp; <ul class="liststyle"> <li>Curabitur</li> <li>Pharetra</li> <li>Conv

中会创建两个段落。为什么? 我注意到浏览器在解释以下代码时有一种奇怪的行为:

  <h2>Maecenas aliquet lorem id urna vehicula</h2>
  <p>&nbsp;
    <ul class="liststyle">
      <li>Curabitur</li>
      <li>Pharetra</li>
      <li>Convallis</li>
    </ul>
  </p>
我知道更好的选择是ul li,但我的选择器p li应该可以工作,但它不能,因此查看Chrome和Firefox中的开发人员工具,他们就是这样解释代码的:

<p>
</p>
<ul class="liststyle">
    <li>Curabitur</li>
    <li>Pharetra</li>
    <li>Convallis</li>
</ul>
<p></p>

唯一的区别是Chrome还显示了我放在那里试图解决问题的实体,但仍然创建了两个段落。我在寻找这种现象的解释。谢谢。

段落可能不包含块级元素。一些浏览器显然认为你犯了错误并试图纠正它


段落不能包含块级元素。一些浏览器显然认为你犯了错误并试图纠正它

您的问题是,根据web标准,标记不应该包含块元素

您的问题是,根据web标准,标记不应该包含块元素


没有理由将ul包装在段落标签中。您的答案可以在此处找到:没有理由将ul包装在段落标签中。您的答案可以在此处找到:可能是因为元素的结束标签是可选的;因此,当浏览器遇到不应包含在中的元素时,它会自动关闭段落。至于第二段,这似乎是更神秘的部分,但似乎是对遇到关闭

而没有相应的的补偿。不是一些浏览器,但所有浏览器都必须处理无效的html代码才能解析它。他们这样做的方式没有严格定义并且被调用。大概是因为元素的结束标记是可选的;因此,当浏览器遇到不应包含在中的元素时,它会自动关闭段落。至于第二段,这似乎是更神秘的部分,但似乎是对遇到关闭

而没有相应的的补偿。不是一些浏览器,但所有浏览器都必须处理无效的html代码才能解析它。他们这样做的方式没有严格的定义,这就是所谓的。
<p>
</p>
<ul class="liststyle">
    <li>Curabitur</li>
    <li>Pharetra</li>
    <li>Convallis</li>
</ul>
<p></p>