为什么在CSS中不应该使用ID选择器?

34

7
你的问题/问题是什么? - Nasreddine
2
我认为这个问题更适合于程序员交流社区。 - Archan Mishra
1
是的,这是一个开放式的“问题”,只会导致个人意见被陈述。 - Dominik Honnef
2
正如@MikulGohil所表达的,这个问题是开放式的,它会引发辩论/意见(只需看看你得到的答案:第一个是赞成,第二个是反对等等。这是不建设性的),这违反了SO规则。阅读FAQ获取更多信息。 - Nasreddine
2
@Archan Mishra,因为这个原因你“不同意”,这使得这个问题变得没有明确答案。 - BoltClock
显示剩余4条评论
3个回答

49

4
这是我认为的最佳答案。过度追求具体细节常常是代码质量问题的信号。 - Scott Silvi

35

我经常使用id选择器。我知道哪些元素是唯一的,哪些不是,针对唯一元素,id选择器(在我看来)是最好的。


11
我不认为你的回答是正确的,因为你有一个唯一的元素。那么,你如何确保将来的要求不会希望另一个元素具有类似的外观呢? - Archan Mishra
18
一:我大部分的设计都由我自己控制(也就是说,我设置要求)。二:有一些元素是不重复的(比如页面包裹器、页眉、页脚、主导航等),对于这些元素,我使用ID进行标识。即使我(出于某种非常奇怪的原因)想要在其他地方完全复制页眉的样式,我仍然可以稍后向css定义中添加一个类,而仍然保持我的页眉由ID定义。 - ScottS
7
正如你自己所说,@scott,你定义了自己的要求,这并不总是对所有人都可行。因此,使用身份证件是不好的做法。 - Archan Mishra
12
在某些情况下,这可能不是一个好的做法,但是一概而论地说这是不好的做法是不正确的。如果您不使用包装器、标题、页脚等,则确实可能没有任何独特的页面元素,因此使用ID可能不明智。 - ScottS
getElementsByClassName vs getElementById & getElementById vs. getElementsByClassName vs. querySelector vs. jQuery. 对于单个唯一选择器,getElementById 的速度略快,但对于两个或更多元素,getElementsByClassName 是更好的选择。就性能而言,getElementById 在单个在您站点上唯一的元素上似乎是一个不错的选择。 - Lanti
1
只要在共享样式表中适度使用id选择器,我认为@ScottS的方法就是完全可以接受的。当CSS直接定义在页面上时,我通常会使用id选择器。事实上,在“一次性”元素(例如特定页面上特定部分的包装器)上使用id选择器实际上可以使标记更易读。它可以告诉未来的开发人员,该样式仅用于非常小的上下文,并且没有被广泛使用。 - Jacob Stamm

14

不建议使用ID作为CSS选择器,因为如果页面中的另一个元素使用相同/类似的样式,你将不得不再次编写相同的CSS。

即使现在没有多个具有该样式的元素,以后也可能出现。因此,始终建议使用class。


3
如果一个元素共享一个ID,它将无法通过验证。你应该强调有效的HTML。 - user393219
5
我不确定为什么这篇文章会被踩,也不理解Shawn的评论。我认为他的观点很重要。第一段 - 如果页面中的另一个元素使用相同/类似的样式,你不能重用该ID。第二段 - 如果需求发生变化,你必须要重新构建代码,而不能像一开始写的那个class一样简单地应用。在我看来这是真实可信的。 - Scott Silvi
是的,@ShawnStrickland的评论完全没有意义。 - Luke

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接