【问题标题】:Why do we still use element ID's in HTML if classes are more flexible and do the same thing?如果类更灵活并且做同样的事情,为什么我们仍然在 HTML 中使用元素 ID?
【发布时间】:2015-04-09 19:22:01
【问题描述】:

假设您正在制作一个全新的应用程序。你可以随心所欲地制作视图/模板/CSS/JS,没有任何预定义,没有结构。您可以在所有帮助程序库中使用任何您想要的选择器,包括类/数据属性。

所以我的问题是:当类/数据属性更灵活、可重用并且通常更容易“堆叠”时,使用 ID 的目的是什么?假设您从头开始构建所有内容,那么任何人都有一个绝对需要元素ID的简洁理由吗?为什么我们仍然坚持在代码中使用它们?

我认为使用 ID 没有任何意义....永远。坦率地说,他们所做的只是让验证者因为你滥用它们而对你大喊大叫。也许我错过了一些金蛋,有人可以告诉我为什么我们仍然在我们的应用程序和事物中使用元素 ID。

【问题讨论】:

  • document.getElementById("idname"),仅此而已。
  • 此外,您可以通过将 ID 作为哈希值包含在 URL 中来导航到 ID(这与它必须是唯一的要求相关)。你不能在课堂上这样做。导航到不同的 ID/锚点也可以使用 trigger hash changes,这可以使用 JS 进行跟踪——想想一个多状态但单页的网站。

标签: html


【解决方案1】:

id 不如class 灵活。但这是它的优势,而不是它的失败。当您给某个东西一个id 而不是class 时,您可以相信它是唯一且明确的(如果文档是有效的)。如果你在 CSS 或 JavaScript 中引用元素,你就知道你会得到一个元素。因此,有很多函数和框架依赖于id(正如您问题中的 cmets 所示)。

还有一个性能差异:引用 ids(因为它们是唯一的)比引用 classes 更快,因为要找到 class 的所有实例,您需要遍历整个文档。见this answer

【讨论】:

    【解决方案2】:

    ID 可用于在语义上标记唯一元素(例如部分文档)。

    虽然类具有多对一的灵活性,并且可用于一般分类,但 ID 仍有其独特的用例。

    一个例子是能够链接到文档中的特定段落或分页。

    也就是说,自从网页设计开始以来,ID 就被广泛滥用,因为 DOM 有非常糟糕的 API 用于按类选择元素 - 以及基于 ID 的查找传统上具有更好的性能这一事实。

    【讨论】:

      猜你喜欢
      • 2022-07-12
      • 1970-01-01
      • 2017-09-04
      • 2020-08-01
      • 2014-06-16
      • 1970-01-01
      • 2018-07-08
      • 2021-07-08
      • 2010-10-07
      相关资源
      最近更新 更多