代码之家  ›  专栏  ›  技术社区  ›  FullStackDeveloper

为什么一些没有关闭标记(self-closing)的非自动关闭HTML元素不会显示这些元素,但有些会显示这些元素

  •  0
  • FullStackDeveloper  · 技术社区  · 7 年前
    1. <textarea> 不是一个自动关闭的元素,对吗?如果是,当我删除 </textarea> 在这个 w3school code example

    2. 只有12个基于 this explanation ? 是否完整?这是否意味着除了这12个自动关闭元素外,我们还必须添加关闭标记?如果不是,则元素无法正确显示?

    2 回复  |  直到 7 年前
        1
  •  3
  •   Obsidian Age    7 年前

    自动关闭标签 void elements ,其中不允许包含任何内容。

    <area> , <base> , <br> , <col> <embed> <hr> <img> , <input> , <keygen> <link> <menuitem> , <meta> , <param> <source> , <track> <wbr> .

    考虑 <textarea> Text </textarea> 自动关闭,因为它包含内容是有意义的;用户输入的文本。

    相反,考虑 <br /> ,因为这是一个换行符;在一条新路线的起点和终点之间永远不会有任何东西。

    暗指的 关闭标签(如果省略);您可以在编写标记时安全地将其忽略。 <br> < .

    省略 a的结束标记 -void元素在某些情况下仍然有效。事实上,有一个列表 optional start and end tags </body> </head> .这是因为你 让一个有效的HTML文档省略这些标记,如果您自己选择省略它们,解析器将 自动地 试着为你把它们放进去。使用 F12 Debugger 将显示如果省略,这些结束标记将自动创建。

    显然,这可能是 对于解析器来说,这非常重要 让你自己添加标签。否则,您可能会得到无效的标记。您可以使用 W3 Markup Validation 服务

        2
  •  1
  •   sideshowbarker Miguel Tomás    7 年前

    </textarea> 结束标记。相反,正如上面提到的@kaido, </body>\n</html> 添加到 textarea 元素作为文本。看:

    screenshot showing textarea eating markup

    正如你所见, </车身>\n</html> 已成为

    也就是说,通过删除 < 结束标记时,您已经使源代码中所有剩余的HTML标记不是作为标记解析的,而是作为 文本区域

    虽然对于某些元素,解析器会推断结束标记应该在哪里,并为您将其添加到DOM中,但解析器会 从不 这样做是为了 文本区域 要素

    this explanation ? 是否完整?这是否意味着除了这12个自动关闭元素外,我们还必须添加关闭标记?如果不是,则元素无法正确显示?

    检查 https://html.spec.whatwg.org/multipage/form-elements.html#the-textarea-element 文本/html中的标记省略 此处为

    规范中的每个元素都具有相似的 文本/html中的标记省略