对 <ul> <li 中的元素 <br> 进行错误验证>

Wrong validation on element <br> in <ul> <li> elements

提问人:Marcello Impastato 提问时间:3/10/2021 最后编辑:TylerHMarcello Impastato 更新时间:10/28/2022 访问量:847

问:

我有这种情况:

...
<ul>
  <li>Text<br/>Text</li><br />
  <li>Text<br/>Text</li>
</ul>
...

寻找 w3c 验证我得到:

错误:在此上下文中,不允许将元素 br 作为元素 ul 的子元素。(禁止显示此子树中的进一步错误。

接下来在验证器中,我也读到:

可以使用元素 br 的上下文:
需要措辞内容的地方。

所以,无论正确与否,都是不对的!

我该如何解决这个问题?

HTML CSS W3C 验证

评论

1赞 Fabrizio Calderan 3/10/2021
仅该片段就没有问题。该错误可能是在其他地方引发的。
1赞 Quentin 3/10/2021
该代码中唯一的元素是元素的子元素,而不是元素。它不会产生该错误。您需要提供一个最小的可重现示例,并确保它演示了问题。brliul
0赞 connexo 3/10/2021
<li>Text<br/>Text</li><br />该行中的第二个元素是 的子元素,它只允许子元素。brulli

答:

2赞 Quentin 3/10/2021 #1
<ul>
  <li>Text<br/>Text</li><br />
  <li>Text<br/>Text</li>
</ul>

错误消息指出,不能将元素作为元素的子元素。brul

在两个元素之间有一个是不允许的。li

删除它。


换行符应该用于断开一行文本,并且在语义上主要用于显式换行很重要的诗歌等事情。

列表项是块元素,会自动创建换行符,无需在它们之间设置显式换行符。

如果你试图模拟一个边距,那么使用一个真实的边距(用CSS应用于li元素)。

li:not(:first-child) {
  margin-top: 1em;
}
<ul>
  <li>Text<br/>Text</li>
  <li>Text<br/>Text</li>
</ul>