【问题标题】:Why should I use "data-" in my attributes or dashes in my tags?为什么我应该在属性中使用“data-”或在标签中使用破折号?
【发布时间】:2014-03-05 17:18:54
【问题描述】:
  1. 根据许多最近的 HTML 规范,当我们使用自定义属性(即规范中未定义的任何属性)时,我们应该在它们前面加上 data-。但是,我认为没有理由必须这样做(显然,除非您需要完全有效的 HTML)。几乎所有当前的浏览器都正确地忽略了自定义属性,这意味着除了与其他人代码中同名的属性之外没有冲突,我们甚至可以使用自定义前缀或类似的东西忽略这一点(如AngularJS directive page 中所建议的那样)。如果有的话,还有什么其他好处?这个问题已经问过before,至少twice,但都已经很老了。

  2. 我忘记了我在哪里读到的,但是一些指南说自定义 HTML 标记需要破折号,而单字标记无效。首先,为什么?其次,我们应该这样做,为什么(除了有效之外)?下划线或者camelCase等会有什么问题吗?此外,与现有元素的冲突应该不是问题,如果像data 属性一样,您可以为它们添加前缀或后缀等。再次查看Angular directive page

我确信所有这些问题都曾被问过,但我将它们合二为一。这是个好主意吗(很快,有人在 Meta 上提问)?

【问题讨论】:

    标签: html custom-data-attribute custom-tag


    【解决方案1】:

    data-* 属性有两个优点:

    1. 这是一个约定,意味着其他程序员很快就会明白它是一个自定义属性。
    2. 您可以免费获得一个 DOM Javascript API:HTMLElement.dataset。如果您使用 jQuery,它会利用它来填充您使用 .data() 找到的键和值。

    自定义元素名称中-的原因是two basic reasons

    1. HTML 解析器可以快速知道它是自定义元素而不是标准元素。
    2. 您不会遇到添加同名新标准元素的问题,如果您为 DOM 元素注册自定义 Javascript 原型,则会导致冲突。

    您应该使用自己的自定义元素名称吗?现在它太新了,不要指望它会得到完全支持。假设它确实有效。您必须在额外复杂性问题与收益之间取得平衡。如果您可以摆脱类名,请使用类名。但是,如果您需要一个带有自定义 Javascript DOM 原型的全新元素,那么您可能会有效地使用它。

    【讨论】:

    • 对于data- #1,idk,“数据”似乎是一个奇怪的选择。我想这是使用它的另一个原因,因为它在 HTML 代码中就像一个大拇指一样突出。对于自定义dash 元素(这可以是它们的新名称吗?),#2,请参阅我所说的data 属性。你可以有一个前缀或其他东西。我会更新我的问题。
    • 你链接的文章是我想的文章。不过,“所以解析器知道它不是标准元素”的原因对我来说没有意义。你能解释一下吗?
    • 浏览器将 HTML 代码解析为各种模型和对象,这样我们就有了一个网页。其中一些模型在幕后,而其他部分我们可以通过 Javascript 和 CSS 进行交互。除了一些默认样式( vs
      vs

      )之外,许多元素彼此之间没有太大区别。但是有些确实具有特殊属性,例如:

    • 浏览器想要知道元素是否是自定义的原因是因为如果您定义了自定义元素,它将继续为自定义元素寻找自定义的 Javascript DOM 原型。通过知道名称是自定义的,它就知道以后可能需要对其应用自定义的 Javascript 原型。
    • 好的,所以标签的自定义是一种预防措施,但是data- 有这样的理由吗?此外,它可能会事先知道您是否提供它并且不知道您是否不提供,但是是否有任何性能改进等?如果你使用 AngularJS 之类的东西,它会完成所有繁重的工作吗?
    猜你喜欢
    相关资源
    最近更新 更多
    热门标签