多个属性值

Avatar of Chris Coyier
Chris Coyier

DigitalOcean 为您的旅程的每个阶段提供云产品。从 200 美元的免费积分 开始!

元素可以有多个类名。例如

<div class="module accordion expand"></div>

然后在 CSS 中,您可以根据其中的任何一个匹配该元素

/* All these match that */
.module { }
.accordion { }
.expand { }

您可以将选择器限制为仅在其中几个存在时匹配,例如

// Will only match if element has both
.accordion.expand { }

但是其他属性呢?

类名在上面概述的功能中是唯一的。其他属性不会因为它们包含空格而被视为“多个值”。例如

<div data-type="module accordion expand"></div>

此元素只有一个 data-type 属性,其值为“module accordion expand”,而不是三个唯一的值“module”、“accordion”和“expand”。但假设我们想要能够像使用类名一样根据各个值选择元素。

我们可以通过使用“*”子字符串匹配属性选择器来实现,它将匹配如果提供的字符串出现在值中的任何位置

[data-type*="module"] {

}

或仅在存在多个特定“值”时匹配

[data-type*="accordion"][data-type*="expand"] {

}

最好使用空格分隔的选择器(例如 [data-type~="expand"])。这样,当您不希望匹配“expander”时,您就不会被类似于“expand”的匹配所困扰。

[data-type~="accordion"][data-type~="expand"] {

}

查看演示

在 IE7+ 中有效(因为 IE 7 是第一个支持属性选择器的 IE)