【发布时间】:2020-09-06 11:47:42
【问题描述】:
我发现有时,<br> 元素不会在我使用的浏览器(Firefox 和 Chrome)中呈现。
<p>Hello<br></p>
<p>Hello<br></p>
将呈现为:
<p>Hello</p>
<p>Hello</p>
同理,
<p>Hello <a href="https://ddg.gg">ddg<br></a></p>
<p>Hello</p>
和:
<p>Hello <a href="https://ddg.gg">ddg</a></p>
<p>Hello</p>
在浏览器中打开时也不会出现任何换行符。
我在 HTML 规范中找不到指定此行为的部分,您知道在哪里可以找到此行为的规范吗?或者您能否以简单的方式描述此行为?
如果您知道这些行为的原因,我也会对这些原因感兴趣。
EDIT :我知道将 br 元素放在 HTML 中的这个位置是非常“不正确”的,我不是生成这个 HTML 的人,但我需要把这个 HTML 转换为另一种格式,所以我有兴趣了解浏览器如何处理这种情况。
【问题讨论】:
-
因为这涉及渲染,我想说 CSS 规范是查看的地方,而不是 HTML。让我看看。我确实知道
在 CSS 方面...有点奇怪,而且不同的浏览器实际上在内部实现它的方式不同,这使事情变得更加复杂。 -
不应像在示例中那样使用该元素。它会中断一行文本,但在 br 之后没有任何文本。 w3.org/TR/html52/textlevel-semantics.html#the-br-element
-
您对此有什么期望?关闭一个段落已经提供了空间
-
对不起,我不清楚,我正在创建一个从 HTML 到另一种格式的转换器,我知道
<br>不应该这样使用。我不是创建这个 HTML 的人,其他人有,我仍然想妥善处理它。我想在这种情况下复制浏览器的行为,即使它被错误地使用,了解更多关于如何呈现对我来说很重要。 -
好的,
描述 的 CSS 实现(但不保证这样实现)非常简单:它的功能类似于换行(& #x0A;) 带有空格:pre。我不知道是否要查看 CSS 规范或其他规范(Unicode?),因为它说不需要呈现行尾的强制换行符。
标签: html line-breaks specifications