Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在HTML中只使用类的缺点?_Html_Css - Fatal编程技术网

在HTML中只使用类的缺点?

在HTML中只使用类的缺点?,html,css,Html,Css,与ID和类相比,在HTML中只使用类有什么负面影响吗?(意味着即使一个元素出现一次,它仍然被赋予一个类而不是id) 编辑-将JavaScript与类而不是ids一起使用时,性能受到的影响有多严重?不使用ids没有任何缺点,除非您需要特别提及单个元素 类也是可选的,但允许您同时引用多个元素 这就是它的全部。不,没有 JavaScript 对于JavaScript,IDs提供了一种快速且确定的方法来选择一个且仅选择一个元素。按类选择(例如使用jQuery之类的库)可能很有用,例如“对类名为XYZ的所

与ID和类相比,在HTML中只使用类有什么负面影响吗?(意味着即使一个元素出现一次,它仍然被赋予一个类而不是id)


编辑-将JavaScript与类而不是ids一起使用时,性能受到的影响有多严重?

不使用ids没有任何缺点,除非您需要特别提及单个元素

类也是可选的,但允许您同时引用多个元素

这就是它的全部。

不,没有


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

演出 在类中使用JavaScript时,性能受到的影响有多严重 相对于身份证

试试看:。在Chrome中,我看到了不同的差异(使用类名要慢5%-40%)。请注意,
GetElementsByCassName
并不是普遍支持的(John Resig有一个新版本)

CSS 从CSS的角度来看,我很少使用ID,而且只有在我知道会有一个匹配时才使用(因为ID必须是唯一的)

然而,我认为这个问题忽略了CSS最重要的能力之一:使用的能力。如果没有这些选择器与类(有时还有ID)的结合,就有可能产生更加脆弱和冗长的CSS

在JavaScript中,复杂选择器在类似于Java的引擎中实现时也非常有用

换句话说,每个元素可能不应该有一个ID和/或类显式分配给它

考虑:

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

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

SECTION H2 { }
P + P { margin-top: 1em; }
/* etc */
在第一个示例中,所有内容都必须显式标识或声明一个类。第二个示例更多地依赖于文档结构

最终目标应该是首先维护代码,同时实现尽可能干净的标记。

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

如果您不需要javascript的挂钩,则不需要id。与id不同,类是可重用的,您会发现完全避免使用css的id(我自己也避免使用)。您会发现建议您也避免使用它们。目前还没有广泛的共识,所以你应该考虑这两个特定的论点。

一个ID的优点是在CSS中它比一个类更具体,所以如果需要的话,你可以利用它,而在JavaScript中,用ID来访问DOM元素比用类更快。p>


至于在您的情况下不使用ID是否是一个缺点,则取决于上述问题是否存在

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

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

  • ID提供了对元素的直接访问,而不必通过DOM树导航到所需的元素
  • 如果文档的结构发生了变化,但ID保持不变,那么您可能不需要修改任何内容
仅举几个原因,我相信可以找到更多


我不得不说,正确平衡地使用ID和类是一条出路。如果你不想在CSS中使用ID,那就不要。但是,如果您或其他人可以利用ID,这并不妨碍您使用ID。

JS不需要ID,但使用它们往往会更高效。ID在CSS中也有更高的特异性,因此也可以用作CSS中的“钩子”。如果单独使用ID,性能会更好。一旦其他选择器被包括进来,它们就失去了性能增益,因为css规则是从右到左处理的。在Firefox 10.0.2中,仅使用
getElementsByClassName()
一项,我的结果就慢了60%-70%。通常,
GetElementsByCassName()
仅用作导航到特定元素的起点,在这种情况下,我想我们会看到更糟糕的结果。@TelmoMarques-我刚刚更新了我的帖子。我看到Chrome的速度慢了40%(尽管它确实有所不同)。还同意在JS中使用更复杂的选择器时对性能的影响;问题是这是否重要?我认为在大多数实现中,干净的代码和可维护性更为重要。当与其他选择器结合使用时,查看id的性能非常重要,以获得更完整的图像。在这些情况下,它们的优势大多会消失。这是一个非常彻底的答案。谢谢你可能的副本