在Body标签上使用Class或ID

29

最近我开始给HTML文档的body标签应用ID 来允许更大范围的CSS控制 (#9)。最近我想到,通过将类应用于body标签,我可以做同样的事情。我想知道每种选择的优缺点。如果我的多个页面具有相同的body标签ID,使用类是否更好?你认为怎么样?为什么?

更新:类/ID基本上是我打算用来识别样式表应用于哪个页面或页面类型的方式。例如,这是主页、联系页面、许多搜索结果页面之一、存档页面等等。

6个回答

25

使用类是完全可以接受的,可能比使用id更好。应尽可能地限制使用id,因为它们可能会与其他id冲突并破坏像document.getElementById这样的功能。

与类选择器相比,id选择器更具体,通常更适合您的用例。 -- David Dorward

然而,并不总是希望有很高的“特异性”。考虑在主样式表中使用body#faq #col_b a {color:gray;},然后有人开发了一个插件,在faq页面上使用灰色背景,现在他们需要使用!important或创建另一个id属性来增加特异性。

此外,考虑在单个元素中使用多个类:

<body class="faq two_column big_footer"> ...

你提到的开发插件时样式可能会崩溃的例子在这种情况下非常可能发生。对我来说,如果有人编写了规则body#faq #col_b a {color:gray;},你是正确的,可能需要应用ID/类来获得更高的特异性。然而,如果你有body.faq #col_b a {color:gray;},对我来说,也需要应用ID/类来获得更高的特异性。你能否更详细地解释一下这两种情况之间的区别? - Jo Sprague
其实并没有太大的区别...我个人不会使用col_b这样的id来指代页面布局中的右侧列,而是会用class。在body#faq .col_b abody.faq .col_b a之间,后者更容易被其他人覆盖。总的来说,如果你正在创建供他人构建CSS的代码,高特异性(如果它被称为这个)可能不是一个好的选择,低特异性可以达到同样的效果。 - Dagg Nabbit
合理的推理。如果其他人正在构建您的CSS,请始终使用最低的特异性来实现所需的结果。 - Jo Sprague

4

id选择器比类选择器更具体化,通常更适合你的使用场景。


2

每个页面的ID需要唯一(如果您想要有效的标记),这意味着页面上只应存在一个特定ID的实例。

另一方面,类可以应用于页面上的多个元素。对于重用相同样式的东西,请使用类,并对于需要自己的样式的更独特的元素,请使用ID。

理想情况下,尽可能使用类,并限制使用ID。

有关ID的更多信息,请参见此处,有关类的更多信息,请参见此处


谢谢。我已经在w3schools上读过了。在我的情况下,我可以使用类(class)或ID,并且都可以接受。然而,我正在尝试思考使用其中一个与使用另一个相比可能存在的任何积极/消极因素。 - Jo Sprague
在这种情况下,只要你所使用的语义是正确的,实际上并不会有什么显著的影响。 - Tyler Treat
1
请不要链接到W3Schools - 它们经常不准确,也没有与W3C关联 - iono

2

你只能(读作:应该)在 body 标签上使用 id。

id = 每个页面仅限使用一次

class = 可以多次使用

1 个 body 标签 = 1 个 id 标签。这在不同页面上可以是相同的。基本上,为此目的使用 class 标签可能有些过度。


1

如果您计划在多个页面中重复使用样式,则最好使用类。如果样式表是为特定页面设计的,则ID很好。但这仍取决于您的应用程序。


0
在HTML5中,id属性可以用于任何HTML元素(它将在任何HTML元素上进行验证。但是,它不一定有用)。
在HTML 4.01中,id属性不能与以下元素一起使用:<base>, <head>, <html>, <meta>, <param>, <script>, <style>, 和 <title>。 注意:HTML 4.01对id值的内容有更严格的限制(例如,在HTML 4.01中,id值不能以数字开头)。
来源:W3School

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