为何</br>标签在谷歌浏览器中会产生换行效果?
为什么
</br>会产生换行而</potato>不会? 这本质是浏览器的HTML容错解析规则在起作用,核心原因有两点:
Void元素的特殊处理:
<br>属于HTML里的「void元素」(空元素,这类元素本身就不允许包含内容,也不需要结束标签,比如<img>、<input>都是这类)。根据HTML规范,当浏览器遇到</br>这种错误的结束标签时,不会直接忽略它,而是会将其解析成一个新的<br>元素——相当于自动把</br>转换成<br>,所以自然会产生换行效果。无效标签的处理逻辑:像
</potato>这种完全不存在的标签,浏览器没有对应的解析规则,会直接将这个无效标签忽略,不会触发任何渲染行为,所以看不到效果。
举个实际例子,你写的代码:
a<br>b</br>c
Chrome会把它解析成:
a<br>b<br>c
这就是为什么视觉效果和a<br />b<br />c完全一致。
内容的提问来源于stack exchange,提问作者Greg Sadetsky
相关产品推荐
相关产品推荐

