Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/40.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。这样选择这些项目是不是不好的做法 .modal #child-element-with-id { ... } 上述方法在我测试过的所有浏览器中都能很好地工作,但是有人从代码气味的角度对此进行了抱怨 我知道ID应该是唯一的,不应该嵌套,但这不构成例外吗?在我看来,这似乎是针对ID的最干净的方法,而不是为模式视图和完整页面视图提供单独的ID。这将起

我们的应用程序有一个模式和完整的页面视图。对于模态,我们将模态类附加到主体,以便根据元素是否包含在此模态类中来选择元素

我们需要瞄准的几个项目都有ID。这样选择这些项目是不是不好的做法

.modal #child-element-with-id { ... }
上述方法在我测试过的所有浏览器中都能很好地工作,但是有人从代码气味的角度对此进行了抱怨


我知道ID应该是唯一的,不应该嵌套,但这不构成例外吗?在我看来,这似乎是针对ID的最干净的方法,而不是为模式视图和完整页面视图提供单独的ID。

这将起作用,是的。但是,如果需要对多个元素重用此样式,则应创建一个类

例如,如果您这样做:

.modal #child-element-with-id { /* same style */ }
.modal #child-element-with-id-2 { /* same style */ }
.modal #child-element-with-id-3 { /* same style */ }
然后您应该创建一个类来避免样式重复

要回答您的问题,陪审团还没有出来,您必须决定选择嵌套ID是否适用于您的用例:


我能看到的唯一问题是,如果您将ID移动到另一个元素,这可能会导致混乱,并且很难调试,因为CSS希望ID嵌套在类中。

通常不赞成按ID设置样式。如果您有机会编辑标记,为什么不向具有ID的元素添加一个类呢

您可能会发现,一旦引入了高度特定的选择器0、1、1、0,以后可能不得不添加到该选择器中,以获得更为特定的内容—这是我们试图避免的场景

…而不是为模式视图和完整页面视图提供单独的ID

我将重新考虑这个设置,并将类添加到ID为的元素中。如果您已经按照id设置了这些元素的样式,那么将CSS选择器交换到类是非常容易的。如果您发现现在这些ID是类,很难对它们进行样式化-我的观点可能已经得到证明:


希望有帮助

正如您提到的,ID应该是唯一的。模式仍与完整页面视图的其余部分位于同一页面上。为什么不用前缀或后缀命名模态内部的元素,比如模态标题id和标题id?我看不出有什么不好的地方。。。这是完全正确的,我知道ID应该是唯一的,不应该嵌套,我以前从未听说过嵌套部分。我看你也没有理由不能。谢谢,因为我没有太臭。将在代码审查中推回。