你能在HTML5中定义自己的自闭合标签吗?

6

我看过这篇话题,但我仍有疑问。是否有任何方法定义虚标记?

我尝试了以下代码:

<icon class="home"/> (know that slash isn't obligatory)

但是,如果在这个标签后面有任何文本内容,Firefox会关闭它们。
<icon class="home"/> Go home

使得
<icon class="home">Go home</icon>

我需要在HTML5中定义标签为无内容元素吗?还是不可能实现?

“Void tag” 是什么意思? - Paul D. Waite
3
简短回答是不应该这样做。举个例子,Twitter使用'i'标签来插入图标-虽然这是“错误”的用法,但它有效。然而,有一些非常前沿的技术可以让你实现这个目的。简言之,如果你是出于学术目的在问这个问题,那么这是HTML中一个令人兴奋的新领域;如果你是出于实践目的在问,那就不要这样做!:) - Rich Bradshaw
啊,自闭。对的。 - Paul D. Waite
2个回答

3

这不是一个完整的答案,因为它没有完全回答问题,但它无法适应评论部分。

如果按照html5规范解析,浏览器会忽略/>中的/(除了MathMLSVGforeign elements,因为对于这些模块的元素,其规范具有自封闭元素,所以需要保持有效性)

相关规范的部分:

(有关浏览器如何处理缺少标签并忽略/的相关部分缺失,我需要查找)

如果元素是void element,则不会生成关闭标记,因为它不需要。

对于其他元素,如果缺少结束标签,则会创建该标签。因此,如果您编写类似以下内容的内容:
<div>
    <div/>test
</div>

它将会导致

<div>
    <div>test</div>
</div>

因为斜杠/会被忽略。

默认情况下,自定义元素是非空元素(non-void)。我知道Custom Elements有一份草案,但老实说我不知道它是否已经在某些浏览器中得到支持。即使它已经被支持了,您仍然会面临向后兼容性的问题。所以我不建议使用它。

即使如此,定义一个没有前缀x-的标签名是一个坏主意,因为如果稍后规范中添加了具有您选择的名称的另一个含义的元素,那么您将会面临问题。

只要我有时间查找规范,我就会提供相应的缺失部分以证明这一点。


这个答案有一些错误。HTML5规范为解析外部元素定义了自己的规则,这不遵循XML、SVG或MathML规范。例如,XML标签名区分大小写,但内联SVG和MathML标签名不区分大小写。 - Carl Smith

-3

你不应该定义自己的HTML标签,就这样。

HTML很有用,因为它是一套约定俗成的标签含义。

(例如,浏览器使链接可点击是因为我们(通过HTML规范)已经约定<a>标签是指向另一个页面的链接。)

可以创建自己的标签,但除了你自己之外,没有人会理解它们的含义。

对于特定的目的,这可能是可以的,但你实际上并没有再使用HTML。


但是,如果我在CSS(和JS)中定义所有的显示内容,那么标签将对所有人友好,并且浏览器将正确解析它。 - l00k
1
@non:是的,但正如我所说的,除了你以外,对任何人都没有意义。(正如我也说过的那样,这可能对你的目的来说没问题——我不清楚你的目的是什么。) - Paul D. Waite
@PaulD.Waite 我相信你太过于字面理解了。我只是不相信如果你选择不雇用某个残疾会明显影响他们工作表现的人,你会有歧视行为。专门为这种工作设计的软件因此不可能是歧视性的。如果我错了,那么在英国,任何涉及Photoshop的工作都如何存在? - jpeltoniemi
@Pichan:当然可以,但我认为你把视觉障碍与任何其他类型的残疾混淆了。仅因为您的应用程序无法满足特定残疾的需求,并不意味着您忽略所有辅助功能问题或停止使用有意义的HTML。 - Paul D. Waite
@Pichan:标准HTML是有意义的,因为我们在HTML规范中达成了共识。自定义标签没有得到认可的含义,除非被转化为标准HTML标签。当存在有意义的替代方案时,无意义的HTML会存在问题。 - Paul D. Waite
显示剩余14条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接