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

Mik*_*hil 26 css css-selectors

我对此行"请勿在CSS中使用ID选择器"感到震惊.这是真的吗?我发现很多帖子都写过这个.

  1. http://mattwilcox.net/archive/entry/id/1054/
  2. http://screwlewse.com/2010/07/dont-use-id-selectors-in-css/
  3. http://oli.jp/2011/ids/

我想我们可以使用ID作为选择器.

我还是想清楚这一点.

Sco*_*son 35

Id选择器优先于其他类型的选择器.这可能会使用较少特定的选择器添加新规则变得更加困难,导致特异性战争:http://www.stuffandnonsense.co.uk/archives/css_specificity_wars.html

  • 这是最好的答案,IMO.特异性战争是代码气味. (4认同)

Sco*_*ttS 27

我一直使用id选择器.我知道哪些元素将是唯一的,哪些元素不是id唯一元素的选择器(在我看来)是最好的.

  • 一:我的大多数设计都是由我控制的(也就是说,我设定了要求).二:有些元素不重复(页面包装,页眉,页脚,主导航等).我为所有这些使用ID.即使我(出于一些非常奇怪的原因)想要使用我在标题上使用的EXACT相同的样式来做其他事情,那么我总是可以在以后为css定义添加一个类,并且仍然保持我的标题由ID定义. (13认同)
  • 我不认为你的答案是正确的,因为你有一个独特的元素现在,你怎么能确保未来的要求可能不希望看到另一个元素? (10认同)
  • 正如你自己所说@scott你定义了你自己的要求,并不是所有人都可以这样做.因此使用ID并不是一个好习惯 (7认同)
  • 在某些情况下这可能不是一个好的做法,但要做一个全面的声明,说它根本不是好的做法是不正确的.如果你不使用包装器,页眉,页脚等,那么你的页面上可能没有任何独特的元素,因此使用ID是不明智的. (7认同)

Arc*_*hra 10

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

即使您现在没有多个具有该样式的元素,也可能会在以后出现.因此,总是建议使用课程.

  • 我不确定为什么这是低估的,我也不理解肖恩的评论.我认为他的观点非常突出.第一段 - 如果页面中的另一个元素使用相同/相似的样式,则无法重复使用该ID.第二段 - 如果需求发生变化,您将不得不重构,而不是仅仅应用您首先编写的类.似乎对我来说是合法的. (5认同)
  • 如果元素共享ID,则不会通过验证.你应该强调有效的HTML. (3认同)