仅使用HTML中的类的缺点?

时间:2012-03-15 18:28:01

标签: html css

在HTML中使用类而不是ID和类是否有任何负面影响? (意思是即使一个元素出现一次,它仍然被赋予一个类而不是一个id)

编辑 - 在使用JavaScript而不是ID时,性能有多严重?

7 个答案:

答案 0 :(得分:5)

的JavaScript

对于JavaScript,ID提供了一种快速且确定的方式来选择一个且仅一个元素。按类选择(例如使用类似jQuery的库)可能是有用的,例如“对类名为XYZ的所有元素执行此操作。”

效果

  

在类中使用JavaScript时性能有多严重   而不是ids?

试一试,看看: http://jsperf.com/class-versus-id。在Chrome中,我看到了不同的差异(使用类名慢了5%-40%)。请注意,getElementsByClassName并非普遍支持(John Resig有comparison of custom implmentations)。

CSS

从CSS的角度来看,我谨慎地使用ID,只有当我知道会有一个匹配时(因为ID必须是唯一的)。

但是,我认为这个问题忽略了CSS最重要的能力之一:使用structural selectors的能力。如果没有这些选择器与类(有时是ID)相结合,您可能会有更脆弱和冗长的CSS。

复杂选择器在Sizzle等引擎中实现时,在JavaScript中也非常有用。

换句话说,每个元素都可能没有明确分配给它的ID和/或类。

考虑:

.foo .bar1 { }
.foo .bar2 { }
#bar3 { }

对战:

.foo > SECTION { }
.foo > SECTION + SECTION { }
.foo:last-child { }

SECTION H2 { }
P + P { margin-top: 1em; }
/* etc */

在第一个示例中,所有内容都必须明确标识,或者说明了类。第二个例子更多地依赖于文档结构。

最终目标应该是可维护的代码,同时实现最清晰的标记。

答案 1 :(得分:1)

如果您不需要javascript的钩子,则不需要id。与id不同,类是可重用的,你会发现some who advocate完全避免使用id作为css(我自己避免使用它。)你会发现CSSLint建议你也避免使用它们。目前尚未就此达成广泛共识,因此您应该考虑该特定论点的双方。

答案 2 :(得分:0)

不使用ID没有缺点,除非您需要专门引用单个元素。

类也是可选的,但允许您一次引用多个元素。

这就是它的全部内容。

答案 3 :(得分:0)

不,没有。


答案 4 :(得分:0)

没有真正的问题。 相反,我会说另一种方式是错误的,只给一个单独的类,没有ID到许多不同的元素。如果您想从该类的所有元素中单独访问单个元素,那么您将遇到麻烦

答案 5 :(得分:0)

ID的优点是在CSS中它比类更具体,所以你可以利用它,如果需要,在JavaScript中,通过ID访问DOM元素比按类访问更快。

关于在你的情况下不使用ID是否不利,将取决于上述是否是问题。

答案 6 :(得分:0)

根据经验,我不得不说不使用ID会有一些缺点。特别是在尝试将您使用的任何JavaScript与任何相当复杂的Web应用程序集成时(因为没有更好的替代方案),或者在解析完整的Web页面时,甚至在为您自己的网站开发JavaScript时。

如果您曾经尝试过上述任何一项,那么您可能已经发现自己希望每个主要元素都有ID,因为:

  • ID提供对元素的直接访问,而不必浏览DOM树以获取所需的元素。
  • 如果文档的结构发生变化,但ID保持不变,则可能无需修改任何内容。

仅举几个原因,我确信可以找到更多原因。

我必须说,正确平衡地使用ID和类是可行的方法。如果您不想在CSS中使用ID,则不要。但是,如果您或其他人可以利用ID,那么这并不会阻止您使用ID。