我无法知道最好的(最有效)的方式来选择一个元素是什么。
比方说,我有以下的布局(非常简单的例子)
<div id="navigation">
<ul>
<li>Link 1</li>
<li>Link 2</li>
<li>Link 3</li>
</ul>
</div>
- 我要选择我的无序列表(保证我不会影响任何其他UL的整个我的网站),我应该怎么办
#navigation ul {}
或类分配给UL? - 我要选择我的列表项,从而也确保我只影响那些。 我应该做的
navigation ul li{}
或指定一个类? - 最后,如果我要选择我的第一个链接和风格了,我该怎么办
#navigation ul li:first-child {}
或指定一个类?
我很欣赏这些问题都是大同小异的,但我很好奇什么时候应该使用一个类,何时不。
这里没有一成不变的答案。
一般的经验法则可能是当你想组的某些元素结合在一起,把他们相同,并使用一类是做的唯一手段使用类。
在你的情况下最后一个例子,有严格不需要的类。
但是,实施例3中使用类会导致更好的性能,因为浏览器将位于相关项目更快。 权衡反对,这是在代码的可读性会有所降低。如果你对一切类名,然后就变得难以阅读标记的其余部分。
总之,在你上面显示的东西,你写什么是好的海事组织。
你应该阅读此文章虽然涵盖选择效率。
基本上效率的顺序如下:
ID, e.g. #header
Class, e.g. .promo
Type, e.g. div
Adjacent sibling, e.g. h2 + p
Child, e.g. li > ul
Descendant, e.g. ul a
Universal, i.e. *
Attribute, e.g. [type="text"]
Pseudo-classes/-elements, e.g. a:hover
类和标识的之间的性能差异通常是不相关的。
进一步下降的名单不过,事情明显放缓。
这是不添加类和ID的无处不在的说法 - 它只是让你来判断性能和可维护性之间的权衡。
#ID应该是唯一的和类不应该。
所以如果你需要添加一些JS - 你需要#ID,如果你只是想风格迥异的元素,是的.class罚款。
我想这真的取决于#navigation元素下的结构多么复杂,都会变成。 使用#navigation元素引用一切可能确定,如果它是一个简单的结构,像你所显示的,但对我来说,如果它是比较复杂的或将有不同的UL,li元素,将需要不同的行为,那么我将1D /类嵌套元素。
对于JavaScript的使用,我觉得比使用本地的选择来得更快,也没有class和id。
有关详细信息,我觉得只是测试这种理论与复杂的代码(用于查看不同时间)。
不要忘了JavaScript的速度取决于你的浏览器。
对于CSS,一篇好文章是这里了解更多详情。