父 A 或 B 的 child 的 CSS 选择器(最佳实践)?

标签 css css-selectors

简而言之,我想选择一个具有或者父元素A或者父元素B的子元素。

我想知道在这种情况下是否有一种方法可以简化我的选择器,或者我这里的方法是否是唯一的方法。另外,在这种情况下是否有最佳实践?下面是一些简化的例子:

/* long example (probably not best practice) */
    #parent-a .common-child {
        color: #000;
    }
    #parent-b .common-child {
        color: #000;
    }

/* shortest example I know of */
    #parent-a .common-child, #parent-b .common-child {
        color: #000;
    }

有没有什么办法可以做到:

#parent-a||#parent-b .common-child {
    color: #000;
}

在这些简单的示例中可能看起来没什么大不了的,但在我的实际 CSS 中,我有几十个选择器通过 DOM 向下链接,我想优化文件大小/可读性。

谢谢!

最佳答案

/* shortest example I know of */
#parent-a .common-child, #parent-b .common-child {
    color: #000;
}

这将是最简单的解决方案。他们必须分开。您所能做的就是像上面那样将相似的样式组合成一行。

但是,我想说您几乎要离开 ID 选择器的使用范围了。 ID 应该是唯一的,应用于它的样式也应该是唯一的。如果您添加了 parent-c 或更进一步,您绝对应该考虑向这些元素添加一个类,而不是通过其 ID 选择每个元素。

color: #000 是一种非常宽泛的风格。如果那是应用到这两个元素的唯一样式,那么将样式设置在更高的父级上以便它的所有子级、孙级等都继承它是有意义的。

如果不了解您的更多结构,我们就无法真正为您提供最佳做法方面的建议。 CSS 及其优化高度依赖于它周围的其他内容并且是特定的。

关于父 A 或 B 的 child 的 CSS 选择器(最佳实践)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9056393/

相关文章:

javascript - 使用显示 : flex; 为菜单设置动画

css - 可以:before and :after pseudo-elements inherit height from the parent element?

css - 有间隙的 float 列表

css-selectors - 了解第 n 个选择器

css - 如何在不选择颜色的情况下禁用自动链接着色?

javascript - 当应用 CSS 省略号并且 offsetwidth 不断返回 0 时,用于使文本出现在工具提示中的 Angular 指令?

css - jQuery Mobile ListView 箭头不存在/可见

java - jsoup css 选择器 : escape question mark

html - 需要 XPATH 表达式的等效 CSS 选择器

javascript - 如果 div 包含另一个(或子)类为 "key"的 div,则更改单击的 div 的颜色