这些 HTML <c- g> 标签是什么?未定义的自定义元素?
What are these HTML <c- g> tags? Undefined custom element?
在查看 HTML 标准的源代码时,有一些我不认识的标签..
例如在这个片段中:
<pre><code class='idl'>[<c- g>Exposed</c->=<c- n>Window</c->]
<c- b>interface</c-> <dfn id='htmlparagraphelement' data-dfn-type='interface'><c- g>HTMLParagraphElement</c-></dfn> : <a id='the-p-element:htmlelement' href='dom.html#htmlelement'><c- n>HTMLElement</c-></a> {
[<a id='the-p-element:htmlconstructor' href='dom.html#htmlconstructor'><c- g>HTMLConstructor</c-></a>] <c- g>constructor</c->();
// <a href='obsolete.html#HTMLParagraphElement-partial'>also has obsolete members</a>
};</code></pre>
来自https://html.spec.whatwg.org/multipage/grouping-content.html
我认为这些可能是自定义元素,但看起来它们并不是通过自定义元素注册表定义的。这是询问 customElements
对象的结果。
>>> customElements.get('c')
undefined
>>> customElements.get('c-')
undefined
这是允许的吗? (我猜是这样,因为它来自 HTML 标准 ,但它仍然让我感到惊讶)。浏览器如何知道这些元素应该如何显示?例如 display: block
与 display: inline
.
这些是由 bikeshed's highlighter 生成的自定义元素(并且有效 HTML)。
没有必要将它们定义为自定义元素,因为它们不会带来任何特定行为,它们所做的只是......节省带宽。
这是the commit摘录:
TERRIBLE-HACK-ALERT Switch to using <c- kt> instead of <span clas…
…s='kt'> to cut the weight of highlighting in half. Still valid HTML!
显然,通过从 <span class="kt">
切换到 <c- kt>
(以及 span.kt {
到 c-[kt]{
),他们节省了一半由突出显示引起的权重。
虽然正如他们所说,这是一个“糟糕的 hack”,但在构建生成大多数 Web 标准页面的工具时仍然有意义,这可能会变得非常冗长。
关于此类自定义元素的默认显示,我将引用Alohci's ,它确实很好:
All elements take the initial, or inherited for inherited properties, value of each CSS property until specified otherwise. So they would be display:inline
关于您期望在规范来源中仅看到最佳实践,最好不要这样假设。阅读这些页面的内容,不要看它们是如何构建的。
大多数 HTML 编辑不会查看生成页面的工具,他们使用充满模板的伪HTML 语言编写规范。
或者在 source:
中
<!-- Note: This file is NOT HTML, it's a proprietary language that is then post-processed into HTML. -->
在查看 HTML 标准的源代码时,有一些我不认识的标签..
例如在这个片段中:
<pre><code class='idl'>[<c- g>Exposed</c->=<c- n>Window</c->]
<c- b>interface</c-> <dfn id='htmlparagraphelement' data-dfn-type='interface'><c- g>HTMLParagraphElement</c-></dfn> : <a id='the-p-element:htmlelement' href='dom.html#htmlelement'><c- n>HTMLElement</c-></a> {
[<a id='the-p-element:htmlconstructor' href='dom.html#htmlconstructor'><c- g>HTMLConstructor</c-></a>] <c- g>constructor</c->();
// <a href='obsolete.html#HTMLParagraphElement-partial'>also has obsolete members</a>
};</code></pre>
来自https://html.spec.whatwg.org/multipage/grouping-content.html
我认为这些可能是自定义元素,但看起来它们并不是通过自定义元素注册表定义的。这是询问 customElements
对象的结果。
>>> customElements.get('c')
undefined
>>> customElements.get('c-')
undefined
这是允许的吗? (我猜是这样,因为它来自 HTML 标准 ,但它仍然让我感到惊讶)。浏览器如何知道这些元素应该如何显示?例如 display: block
与 display: inline
.
这些是由 bikeshed's highlighter 生成的自定义元素(并且有效 HTML)。
没有必要将它们定义为自定义元素,因为它们不会带来任何特定行为,它们所做的只是......节省带宽。
这是the commit摘录:
TERRIBLE-HACK-ALERT Switch to using <c- kt> instead of <span clas…
…s='kt'> to cut the weight of highlighting in half. Still valid HTML!
显然,通过从 <span class="kt">
切换到 <c- kt>
(以及 span.kt {
到 c-[kt]{
),他们节省了一半由突出显示引起的权重。
虽然正如他们所说,这是一个“糟糕的 hack”,但在构建生成大多数 Web 标准页面的工具时仍然有意义,这可能会变得非常冗长。
关于此类自定义元素的默认显示,我将引用Alohci's
All elements take the initial, or inherited for inherited properties, value of each CSS property until specified otherwise. So they would be
display:inline
关于您期望在规范来源中仅看到最佳实践,最好不要这样假设。阅读这些页面的内容,不要看它们是如何构建的。
大多数 HTML 编辑不会查看生成页面的工具,他们使用充满模板的伪HTML 语言编写规范。
或者在 source:
<!-- Note: This file is NOT HTML, it's a proprietary language that is then post-processed into HTML. -->