我总是使用class
属性,而不是id
用于CSS选择和样式。我知道id
必须是唯一的,但这似乎不是将其用于CSS的理由。
我使用id
属性的唯一原因是JavaScript和表单标签。
我发现混合id
和class
出于CSS的目的可能会引起混淆,对我而言,这是强制分离风格和行为的好方法。
是否有充分理由将id
用于CSS目的?使用id
无法完成的class
是否可以实现任何目标?
评论我发现有用/有趣
答案 0 :(得分:20)
如果它是一个没有重复的元素,那么使用ID进行样式化是有意义的,特别是如果它出现在所有/大多数页面中。
E.g:
答案 1 :(得分:10)
选择具有唯一ID的任何内容比使用类选择更快。差异可以忽略不计,但在拥有大量DOM元素或密集型Javascript应用程序的应用程序中,它会产生重大影响。
例如,如果您使用的是jQuery,请查看:jquery performance rules
答案 2 :(得分:8)
不,但如果你的元素有id
,为什么不用它来造型?
你可以对元素名称说同样的话 - 你无法用p
做class='paragraph'
无法做到的事情。这并不意味着将class='paragraph'
添加到每个<p>
元素中是个好主意。
答案 3 :(得分:5)
ID 标识,类分类。这一点在这里已经多次提及,或多或少。
一个例子是:
<div class="author" id="stephen">[...]</div>
从CSS特异性的角度来看,定位ID会使CSS规则比具有类的规则更具体,甚至是几个类。
因此:
p#recent {}
比
更具体body>p.news.recent {}
当用户代理找到这两个时,第一个将占优势。
答案 4 :(得分:4)
您无需使用ID。您无法使用无法使用类创建的ID创建设计。
据说,使用ID具有将选择器明确标记为仅应用于页面中的一个元素的优点。我通常将它们用于我的页面模板中的样式元素(#Content,#Navigation等)。
一般情况下,我会尝试在允许我使标记更简洁的区域中使用它。当选择器可以作为标记时,您应该使用标记。如果可以将ID作为目标,请使用该ID。否则,请使用课程。
但是,再次,你是否使用ID并不是非常重要。
答案 5 :(得分:4)
我倾向于认为HTML中id
和class
的关系类似于面向对象的编程:id
就像class
的实例。
我使用的类比使用id更多,并且经常使用多类选择器(例如.film.drama
)。但是,如果我确实想要识别特定元素,以便我可以应用特定的样式或行为,那么我将分配id
,并且通常也分配class
。例如。
<ul>
<li class="film drama">A</li>
<li class="book drama">B</li>
<li class="film documentary" id="film-9832">C</li>
</ul>
在分配id时,我认为“在页面上有多个这样的内容是否有意义”。如果答案是肯定的,那么我可能会选择上课。
结果,正如@RichN和@AaronSieb所提到的,我经常使用id来表示特定页面元素,这些元素肯定只出现在页面上一次:
<ul class="sidebar" id="site-meta">[...]</ul>
答案 6 :(得分:4)
我使用ID标签的主要原因是与正在阅读我的代码的人进行通信。具体来说,ID标签可以让他们完全放心地引用他们想要的任何特定元素,因为他们知道他们对它所做的任何更改只会影响那一个元素。
编辑:使用您可能不知道的ID标签还有更多技术原因。我根据vol7ron的comment再次更新了这篇文章,并进行了一些进一步的研究以用于历史目的。对于那些不熟悉CSS的人来说,这些信息非常有启发性。
以下大纲详细说明了层叠样式表的“级联”性质。在本大纲中,首先根据大纲的最高标准比较2种CSS样式,即“1. Winner = !important declaration ”。如果一个样式在该方面的优先级高于另一个样式,则它会获胜。如果它们在该方面相同,请继续下一个标准,直到找到区分因子。
#some-element {color: blue !important;}
击败#some-element {color: red;}
。<div id="some-element" style="color: yellow;}">some content</div>
跳动... <style type="text/css">#some-element {color: red;}</style>
和...... <link type="text/css" link rel="stylesheet" href="set-some-element-color-to-blue.css"/>
。#some-element#id-2 {color: blue;}
击败#some-element {color: red;}
。.some-elements.class-2 {color: blue;}
击败.some-elements {color: red;}
。#some-element:hover {color: blue;}
击败#some-element {color: red;}
。<style type="text/css">#some-element {color: red;}</style>
节拍... <link type="text/css" link rel="stylesheet" href="set-some-element-color-to-blue.css"/>
因为内部CSS 是在外部CSS 之后读取的。答案 7 :(得分:1)
如果您有多个同一个类的元素,并且需要为其中一个或多个指定不同的样式,这对我来说似乎非常有用。
答案 8 :(得分:1)
我唯一可以想到使用ID的是你是否有特异性战争 - 两个具有相同特异性的元素。应用ID将使您的元素具有更高的特异性 - 确切地说是+100。
因此,如果您有两种定义具有相同特异性的样式,您可能希望通过对另一种应用更高的特异性来“破坏”一种样式。话虽如此,您也可以通过将更具体的类应用于该选择器来实现相同的目标,这样可以将特异性提高10倍。
ID = 100(#foo) class = 10(.bar) element = 1(div)
答案 9 :(得分:0)
IMO,使用基于ID的样式是一个坏主意。
ID是唯一的, 只能在您的DOM中出现最多1次。这限制了任何ID相关风格的使用最多1次。
另一方面,CSS类可以多次使用或根本不使用。
坦率地说,我认为ID应该用于行为,而类应该用于样式。您可以互换使用它们的事实是使Web开发的某些方面不一致的部分原因。
答案 10 :(得分:0)
当我知道即将在该特定元素上使用javascript时,我使用id。 ID比javascript中的类要快得多。
答案 11 :(得分:0)
我个人更喜欢将ID用于静态页面元素(页眉,页脚)。原因是页面重量。
id =“h”比class =“h”轻。
在我看来,每个字节都很重要。
答案 12 :(得分:0)
我在CSS中使用id的主要原因是布局。如果我有一个页眉和页脚,那么:
#header
{
...
...
...
}
#footer
{
...
...
...
}
或者我的主要内容的一个包装,或右侧边栏。如果某人决定他们喜欢我的布局并希望查看来源,那么很容易看到。