仅在特定类内将具有ID的CSS元素作为目标有效吗?

时间:2018-06-25 20:05:50

标签: css css-selectors

我们对应用程序有一个模态和全页视图。对于模态,我们在主体上附加一个“模态”类,以便我们可以根据元素是否包含在此“模态”类中来选择元素。

我们需要定位的几个商品都有ID。像这样选择这些项目是不好的做法吗?

.modal #child-element-with-id { ... }

上面的代码在我测试过的所有浏览器中都可以很好地工作,但是代码审查中的某个人从代码气味的角度抱怨它。

我知道ID应该是唯一的,不应嵌套,但这不是一个例外吗?在我看来,定位ID似乎是最干净的方法,而不是为模式和完整页面浏览量提供单独的ID。

2 个答案:

答案 0 :(得分:1)

可以,是的。但是,如果您需要将此样式重用于多个元素,则应创建一个类。

例如,如果您这样做:

.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嵌套在类中。

答案 1 :(得分:1)

通常不赞成按ID进行样式设置。如果您有机会编辑标记,为什么不向带有ID的那些元素添加类?

您可能会发现,一旦引入了高度特定的选择器(0、1、1、0),您可能最终不得不为更特定的内容添加到选择器中–这是我们尝试避免的情况。 / p>

  

...而不是为模态和全页视图提供单独的ID

我将重新考虑此设置,并将类添加到具有ID的元素上。如果您已经已经通过#id设置这些元素的样式,则可以很容易地将CSS选择器交换为一个类。如果您发现#id属于类,现在设置样式容易-我的观点可能已经被证明:)

希望有帮助!