我看过这篇话题,但我仍有疑问。是否有任何方法定义虚标记?
我尝试了以下代码:
<icon class="home"/> (know that slash isn't obligatory)
但是,如果在这个标签后面有任何文本内容,Firefox会关闭它们。
<icon class="home"/> Go home
使得
<icon class="home">Go home</icon>
我需要在HTML5中定义标签为无内容元素吗?还是不可能实现?
我看过这篇话题,但我仍有疑问。是否有任何方法定义虚标记?
我尝试了以下代码:
<icon class="home"/> (know that slash isn't obligatory)
<icon class="home"/> Go home
<icon class="home">Go home</icon>
这不是一个完整的答案,因为它没有完全回答问题,但它无法适应评论部分。
如果按照html5规范解析,浏览器会忽略/>
中的/
(除了MathML
和SVG
的foreign elements
,因为对于这些模块的元素,其规范具有自封闭元素,所以需要保持有效性)
相关规范的部分:
(有关浏览器如何处理缺少标签并忽略/
的相关部分缺失,我需要查找)
如果元素是void element
,则不会生成关闭标记,因为它不需要。
<div>
<div/>test
</div>
它将会导致
<div>
<div>test</div>
</div>
因为斜杠/
会被忽略。
默认情况下,自定义元素是非空元素(non-void)
。我知道Custom Elements有一份草案,但老实说我不知道它是否已经在某些浏览器中得到支持。即使它已经被支持了,您仍然会面临向后兼容性的问题。所以我不建议使用它。
即使如此,定义一个没有前缀x-
的标签名是一个坏主意,因为如果稍后规范中添加了具有您选择的名称的另一个含义的元素,那么您将会面临问题。
只要我有时间查找规范,我就会提供相应的缺失部分以证明这一点。
你不应该定义自己的HTML标签,就这样。
HTML很有用,因为它是一套约定俗成的标签含义。
(例如,浏览器使链接可点击是因为我们(通过HTML规范)已经约定<a>
标签是指向另一个页面的链接。)
你可以创建自己的标签,但除了你自己之外,没有人会理解它们的含义。
对于特定的目的,这可能是可以的,但你实际上并没有再使用HTML。