【问题标题】:What's the point of using an id selector? [duplicate]使用 id 选择器有什么意义? [复制]
【发布时间】:2016-05-06 09:18:44
【问题描述】:

我是 CSS 新手,在了解了 ID 选择器之后,它们与类选择器的唯一区别是每个元素只能有一个特定的 id,而多个元素可以共享同一个类名。但是很简单:为元素命名一个您不会用于任何其他元素的类名。所以从这个意义上说,一个类可以被视为一个 I.D.

我是 CSS 新手,所以我可能在这里遗漏了一些东西。在特定情况下,使用 ID 选择器比使用类选择器有什么优势?

谢谢。

【问题讨论】:

  • 因为如果其他人查看您的代码,他们会认为该类可以多次使用。此外,因为这是最佳实践,并且由于其特殊性,ID 确实优先于类。
  • 谢谢。我不明白为什么这是一个坏问题。你能解释一下吗?
  • 我不认为这是一个坏问题。身份证有好处也有坏处。直到今天,如果你想在 JS 中选择一个元素,而不使用库,它是返回查询的最快方法,并且适用于所有浏览器,无需询问。

标签: css


【解决方案1】:

我想到了以下几个原因:

直接链接。

您可以通过将 id 添加到 url 的末尾来直接链接到页面上的特定元素。有关示例,请参阅此帖子:Link to an element within the current page

Javascript 兼容性。

很多 JS 库都利用了类和 ID 之间的差异。例如,他们会将类视为元素数组,假设您要遍历该类的所有实例。另一方面,ID 被假定为单数,无论您尝试实现什么功能,都只会查找单个实例。这具有较小(几乎不明显)的性能优势,但如果使用不当也会破坏许多功能。

特异性。

当定位页面上的元素时,特异性总是会发挥作用。由于 ID 和类具有不同的权重,当您试图防止样式相互覆盖时,错误地使用它们可能会导致问题。更多信息请看这里:https://developer.mozilla.org/en-US/docs/Web/CSS/Specificity

浏览器兼容性。

虽然浏览器在符合现代 CSS 标准方面做得越来越好,但总会有一些怪癖。并非每个选择器都适用于所有浏览器,并且当您的用户使用旧版本的 IE 或某些随机构建的 Safari 访问您的网站时,一些 CSS 技巧可能会中断。话虽如此,无论如何,ID 将始终有效。这可能与您的具体情况无关,但可以帮助防止以后的头痛。

最佳实践/可读性。

IMO 最重要的是可读性方面。在查看其他开发人员的代码时,我假设当我看到 CSS 中指定的类时,他们设置的任何样式都会影响页面的多个区域。这意味着我不应该在没有进一步研究的情况下就改变事情。与此相反,如果我看到使用了一个 ID,我可以假设对该特定样式的任何更改都只会影响那个区域,并且在此过程中对我来说应该不会有任何意外。

【讨论】:

    猜你喜欢
    • 2015-03-11
    • 2015-08-18
    • 2021-07-09
    • 1970-01-01
    • 1970-01-01
    • 2014-01-15
    • 1970-01-01
    • 1970-01-01
    • 2012-08-07
    相关资源
    最近更新 更多