检查此html代码
<p>test</p>
<p>
<ul>
<li>
<span style=\"line-height: 1.42857;\">1
</span>
<br>
</li>
<li>
<span style=\"line-height: 1.42857;\">2
</span>
<br>
</li>
<li>
<span style=\"line-height: 1.42857;\">3
</span>
<br>
</li>
<li>
<span style=\"line-height: 1.42857;\">4
</span>
<br>
</li>
</ul>
<p>
<span style=\"line-height: 20px;\">more text
</span>
</p>
</p>
出于某种原因,<ul>
前后空<p>
正在渲染(我到目前为止尝试过chrome和ff)。
检查此plunker here并尝试检查结果,您会看到类似的内容
<body>
<p>test
</p>
<p> <----------THIS
</p>
<ul>
<li>
<span style="\"line-height:" 1.42857;\"="">1
</span>
<br>
</li>
<li>
<span style="\"line-height:" 1.42857;\"="">2
</span>
<br>
</li>
<li>
<span style="\"line-height:" 1.42857;\"="">3
</span>
<br>
</li>
<li>
<span style="\"line-height:" 1.42857;\"="">4
</span>
<br>
</li>
</ul>
<p>
<span style="\"line-height:" 20px;\"="">more text
</span>
</p>
<p></p> <-------------- AND THIS
</body>
无法弄清楚原因。任何提示?
答案 0 :(得分:6)
答案 1 :(得分:2)
您正试图错误地嵌套标签。 <p>
代码不能包含其他<p>
或列表(<ul>
或<ol>
)代码。
列表元素(特别是ol和ul元素)不能是p元素的子元素。因此,当一个句子包含项目符号列表时,可能会想知道它应该如何标记。
...
您所看到的是浏览器尝试通过分别为不匹配的开始和结束标记提供关闭和打开标记来处理无效标记(misnested tags)。当浏览器看到<ul>
时,它会关闭仍然打开的<p>
。当它看到您示例中的最终</p>
时,它会提供<p>
来匹配。
正如昆汀的回答所指出的那样,你应该使用HTML validator。
附注:您的HTML中有很多\"
个,您应该只有"
。我认为这是因为这个HTML实际上是由PHP或其他语言准备的,但这就是为什么你会得到像style="\"line-height:" 1.42857;\"=""
这样奇怪的属性。