<textarea>
不是自闭元素,对吗?如果是这样,当我在此w3school code example中移除</textarea>
时,为什么它仍然有用?
根据this explanation,只有12个自闭元素?完成了吗?这是否意味着我们必须添加结束标记,除了这12个自闭元素?如果没有,那么元素无法正确显示?
答案 0 :(得分:1)
自我结束标记伴随void elements,不允许其中包含任何内容。
空白元素包括<area>
,<base>
,<br>
,<col>
,<embed>
,<hr>
,<img>
,{ {1}},<input>
,<keygen>
,<link>
,<menuitem>
,<meta>
,<param>
,<source>
和{{1 }}
考虑<track>
。那是不自我关闭,因为它包含内容是有意义的;用户输入的文字。
相反,请考虑<wbr>
。这是自我关闭,因为它是一个换行符;在新线的开始和结束之间永远不会有任何东西。
如果省略,则无效元素具有隐含结束标记;你可以在写标签时安全地将它遗漏。 <textarea> Text </textarea>
与<br />
一样有效。
省略 非 -void元素的结束标记在某些情况下仍然有效。事实上,有一个 optional start and end tags 列表,其中包含<br>
和<br />
等内容。这是因为您不能拥有省略这些标签的有效HTML文档,如果您选择自行省略它们,解析器将自动尝试将它们放入您的位置。使用 F12 Debugger 进行检查会发现,如果省略这些结束标记,则会自动创建。
显然,对于解析器来说,这可能是令人困惑,并且您可以自己添加标签更安全。否则,您最终可能会得到无效标记。您可以使用 W3 Markup Validation 服务来测试您的标记是否有效。
希望这有帮助! :)
答案 1 :(得分:1)
省略</textarea>
结束标记时,它不起作用。相反,@ Kaiido在上面提到,“</body>\n</html>
”作为文本添加到textarea
元素的内容中。看:
正如您所见,“</body>\n</html>
”已成为textarea
内容的一部分。
也就是说,通过删除</textarea>
结束标记,您已将源中的所有剩余HTML标记解析为不是标记,而是作为textarea
元素的文本内容。 / p>
虽然对于某些元素来说,解析器会推断出结束标记的位置并将其添加到DOM中,但解析器永远不会为{{1}执行此操作} element。
根据this explanation,只有12个自闭元素?完成了吗?这是否意味着我们必须添加结束标记,除了这12个自闭元素?如果没有,那么元素无法正确显示?
检查https://html.spec.whatwg.org/multipage/form-elements.html#the-textarea-element,您会看到标记省略textarea
元素:
这两个标签都没有遗漏。
规范中的每个元素在text / html 部分都有类似的标记省略,解释了您是否可以省略该元素的结束标记或开始标记。