Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/36.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.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
Css:为什么不使用ID,这是紧密耦合之外的另一个原因_Css_Css Selectors - Fatal编程技术网

Css:为什么不使用ID,这是紧密耦合之外的另一个原因

Css:为什么不使用ID,这是紧密耦合之外的另一个原因,css,css-selectors,Css,Css Selectors,我有一个页面,其中有一个id为id的标签,但它是一个普通的css类,如下所示: <div id='stack_overflow_example' class='title'> ... </div> 。。。 众所周知,这个id在该页面上必须是唯一的,我使用它只是为了在css下轻松找到它(例如,可以用于ajax请求,但事实并非如此) 在阅读css定位器(选择器)时,我发现我不应该使用ID作为css选择器,因为这将使我的css代码与html代码紧密耦合 好吧,我同意。但是我

我有一个页面,其中有一个id为
id
的标签,但它是一个普通的css类,如下所示:

<div id='stack_overflow_example' class='title'> ... </div>
。。。
众所周知,这个
id
在该页面上必须是唯一的,我使用它只是为了在css下轻松找到它(例如,可以用于ajax请求,但事实并非如此)

在阅读css定位器(选择器)时,我发现我不应该使用ID作为css选择器,因为这将使我的css代码与html代码紧密耦合

好吧,我同意。但是我们可以选择在标签上放置一个唯一的css类,然后在css代码上使用它

为什么这个选项没有第一个选项紧密耦合

除了我刚才所想的以外,有谁能给出任何其他理由:“因为在第二个选项中,您也可以在其他‘unique’标记上重用‘unique’css。”

编辑:考虑到性能原因,我的朋友只是想(我也同意):

  • 使用“id”标记,“搜索”将遍历所有html代码,直到找到该id的第一次使用,然后停止,因为“id”是唯一的
  • 使用“唯一类”,“搜索”将遍历所有html代码直到EOF,因为许多元素可能具有该“唯一类”

在边缘的末尾,是不是有一个性能问题使选项1听起来更好?

您可以对每页中的任何一个元素应用一个唯一的ID。哪一个元素具有ID并不重要,只要每页只有一个元素具有ID。对于类没有这样的规则。因此,您所指的耦合问题(即CSS有一个非常严格的假设,即具有特定ID的元素在其应用的任何HTML页面上都具有相同的表示和用途)


老实说,我不太关心耦合(编辑:或性能)问题。如果我有一个ID,并且我希望仅将样式应用于该ID,那么我将按该ID进行选择。如果元素与其他元素共享该类,并且我希望将样式应用于该类的所有元素,那么我将按该类进行选择。

听起来您或多或少正确地理解了它。虽然在某些情况下,在css选择器中使用ID是正确的做法,但类的优势不仅在于它可以应用于页面上的多个元素,而且每个元素可以有多个类,这使得它们更易于重用。(假设我想重用当前通过ID选择器应用的一些样式规则,但是我想应用这些样式规则的元素已经从另一个ID选择器获取了一组样式规则…无法为该元素提供两个ID。对于类,您不会遇到这种情况)

@Gabriel L.Oliveira:这里的表现也并不重要。HTML和CSS关注的是语义和关注点的分离(但不太关注耦合/重用),而不是性能。@谢谢您的回答。我明白你的意思了,想想你和@kekela都给出了答案的原因page@gabrielBoltClock在这里谈到了我不太关心性能的钱…在一个有延迟的web应用程序的环境中,我认为这对你的css选择器影响用户体验是一个非常有利的情况…如果速度是你的问题,我已经说过了99.99999999999%的时间你会在css之外的其他地方进行优化(这对我来说是100%,但如果我说100%,我会有太多人来概括我错了的地方:)@kekekela是的,我理解。在考虑web页面的性能优化时,这种类型的性能故障将位于列表的底部,对吗?:)非常感谢。我只是在stackoverflow上问这个问题,因为我在思考它对性能的影响有多大,这让我非常激动。在这里,我可以找到比我更好的头脑来回答这样的问题:)谢谢你的回答。我明白你的意思,并且认为你和@BoltClock在这个问题上的答案都是合理的page@Gabriel“你能看看我的编辑吗?”是的,你在那里写的很有道理,但你进入了浏览器实现的细节,我真的不知道…从我的个人经验来看,我从来没有看到过一种方式比另一种方式更能提高性能。(不是说没有,但如果有,通常不明显)