CSS中段落嵌套列表为何渲染异常?求解析内在逻辑
为什么段落(
)嵌套列表(
- /
- )会出现样式异常?
这不是CSS的问题,核心原因是HTML规范禁止在
标签内嵌套块级元素——
- 、
- 遇到
- 时,浏览器会提前闭合前面的
- 会被作为独立的块级元素放在
- 剩下的“Last line.”不会被包含在原来的
里,也不会继承任何背景样式,最终呈现无背景的状态。
外面,所以它的黄色背景正常生效;
浏览器实际解析后的DOM结构大致如下:
<p style="background-color:red"> First line. </p> <ul style="background-color:yellow"> <li> Item one </li> <li> Item two </li> </ul> Last line.如果想实现“列表和文本处于同一个带背景的容器内”的效果,应该用
替代——
是通用块级容器,允许嵌套任意块级/行内元素,示例代码如下:<div style="background-color:red"> First line. <ul style="background-color:yellow"> <li> Item one </li> <li> Item two </li> </ul> Last line. </div>内容的提问来源于stack exchange,提问作者user2527816
- 剩下的“Last line.”不会被包含在原来的
标签,把“First line.”留在这个红色背景的
里;
- 这类列表元素都属于块级元素,不符合
标签的内容模型要求。
HTML标准里,
是段落元素,它只能包含行内元素(比如文本、、等),不能容纳任何块级元素。当浏览器解析你写的不符合规范的代码时,会自动修正DOM结构:
相关产品推荐
相关产品推荐

