6

鉴于当前允许创建自定义 HTML 元素的HTML5 规范(只要它们的名称包含破折号),以及 Web 组件似乎是一个可以保留的功能这一事实,我想知道为什么要创建自己的自定义 HTML元素皱眉?

请注意,我不是在问是否使用 Web 组件——它仍然是一个移动的目标,即使使用像 Polymer 这样的优秀 polyfill 可能还没有准备好投入生产。我问的是如何创建您自己的自定义 HTML 标记并对其进行样式设置,而无需将任何 JS API 附加到它们。

4

2 回答 2

2

简短的回答:我还没有听到任何非常有说服力的理由来避免它们。

但是,以下是我听到的一些反复出现的论点:

  • 在旧的 IE 中不起作用(document.createElement("my-tag");应该解决这个问题)。
  • 全局命名空间冲突(通常同样适用于类名和自定义元素)。
  • CSS 选择器性能(哦,这几乎是您应该担心的最后一件事)。
  • 功能、意义和表示的分离。这实际上是我听到的唯一一个论点,即恕我直言有任何有效的依据。当然,使用语义 HTML(搜索引擎和所有这些)会更好,但如果您打算使用 a divfor 它,我不明白为什么您不能使用自定义标签。
于 2014-11-03T11:46:56.700 回答
1

反对自定义标签的理由之一是它们与屏幕阅读器的隐含不兼容。这个问题可以通过WAI-ARIA 属性来解决。

IE11 中存在一个问题,如果在表格单元格中插入没有显示属性的自定义元素,则会破坏表格布局。检查 plunker 代码。因此,显式声明所有新元素是最安全的,例如:

new-element {
    display: block;
}
于 2014-11-03T12:15:46.203 回答