有没有一种方法可以根据设置为两个特定类的class属性的值,用CSS Select 一个元素.例如,假设我有3个div:

<div class="foo">Hello Foo</div>
<div class="foo bar">Hello World</div>
<div class="bar">Hello Bar</div>

根据列表中的第二个元素既是foo类又是bar类的成员的事实,我可以编写什么CSS来仅 Select 它呢?

推荐答案

链接两个类 Select 器(中间没有空格):

.foo.bar {
    /* Styles for element(s) with foo AND bar classes */
}

如果你仍然需要处理像IE6这样的古老浏览器,请注意它不会正确读取链式类 Select 器:它只会读取last类 Select 器(本例中为.bar),而不管你列出了其他哪些类.

为了说明其他浏览器和IE6是如何解释这一点的,请考虑这个CSS:

* {
    color: black;
}

.foo.bar {
    color: red;
}

支持的浏览器上的输出为:

<div class="foo">Hello Foo</div>       <!-- Not selected, black text [1] -->
<div class="foo bar">Hello World</div> <!-- Selected, red text [2] -->
<div class="bar">Hello Bar</div>       <!-- Not selected, black text [3] -->

IE6上的输出为:

<div class="foo">Hello Foo</div>       <!-- Not selected, black text [1] -->
<div class="foo bar">Hello World</div> <!-- Selected, red text [2] -->
<div class="bar">Hello Bar</div>       <!-- Selected, red text [2] -->

脚注:

  • Supported browsers:
    1. Not selected,因为这个元素只有foo类.
    2. Selected,因为这个元素有foobar两类.
    3. Not selected as this element only has class bar.

  • IE6:
    1. Not selected,因为此元素没有类bar.
    2. Selected,因为该元素有bar类,而不考虑列出的任何其他类.

Css相关问答推荐

在carousel组件上应用css转换时出现问题

如何在移动屏幕尺寸上包装元素?

需要Angular material 下拉面板有向下和向上箭头按钮

为什么CSS flex似乎应用了两次内部元素的填充?

为什么 CSS Calc() 函数只需要+或-运算符前后有空格

Nextjs Tailwind Marquee 组件溢出

在 css 中使用 first-of-type 效果太好了吗?

CSS网格使sibling 项目拉伸

如何为柔和的配色方案提供易于使用的高对比度替代方案?

弹簧靴.一个文件捕获 CSS 其他没有

flexbox 布局中的 Padding-bottom/top

为什么无论我做什么都不能改变复选框的 colored颜色 ?

边界半径应该剪辑内容吗?

如何让 Firefox 在文件更改时自动刷新?

什么是 DOM 回流?

删除所有填充和边距表格 HTML 和 CSS

以原始大小的 50% 显示图像

在 CSS3 中重新启动动画:比删除元素更好的方法吗?

CSS 插入边框

仅当存在 2 个类时,您可以使用 CSS 定位元素吗?