在 CSS 中指定多个属性选择器

Posted

技术标签:

【中文标题】在 CSS 中指定多个属性选择器【英文标题】:Specify multiple attribute selectors in CSS 【发布时间】:2012-09-02 16:09:27 【问题描述】:

执行以下操作的语法是什么:

input[name="Sex" AND value="M"]

基本上,我想选择具有name="Sex" 属性以及value="M" 属性的input 元素:

<input type="radio" name="Sex" value="M" />

以下元素应该被选中:

<input type="radio" name="Sex" value="F" />

【问题讨论】:

【参考方案1】:

简单的input[name=Sex][value=M] 会很好。而且在standard doc中其实也有很好的描述:

多个属性选择器可以用来引用多个 一个元素的属性,甚至多次到同一个属性。

这里,选择器匹配所有具有“hello”属性的 SPAN 元素 恰好具有“克利夫兰”值,其“再见”属性具有 正是“哥伦布”的价值:

span[hello="Cleveland"][goodbye="Columbus"] color: blue;

附带说明,仅当属性值不是有效标识符时,才需要在属性值周围使用引号。

JSFiddle Demo

【讨论】:

有没有这样的东西,但是用 OR 代替 AND? 你的意思不是,(逗号)? 你不能写 span[hello="Cleveland"],[goodbye="Columbus"] 但你必须重复一段(可能很长)。 您确实必须(至少目前如此),除非您使用预处理器。详情请咨询this thread。 请注意两个[][]之间不能有空格符号【参考方案2】:

只是补充一点,选择器和左括号之间不应该有空格。

td[someclass] 

会起作用。但是

td [someclass] 

不会。

【讨论】:

【参考方案3】:
[class*="test"],[class="second"] 
background: #ffff00;

【讨论】:

【参考方案4】:

对于连接它是:

input[name="Sex"][value="M"] 

对于联合是:

input[name="Sex"], input[value="M"] 

【讨论】:

【参考方案5】:

连接属性选择器:

input[name="Sex"][value="M"]

【讨论】:

值得注意的是,至少有一个属性值必须被引用。如果您将其写为input[name=Sex][value=M],这将失败,即使选择器只有一个不使用引号的属性也是有效的。 @stevec 你的意思是把这个放在接受的答案上吗?我在回答中引用了这些值。我也不认为这是真的。如果答案包含某些字符但在此示例中没有,则需要引号。 mothereff.in/unquoted-attributes 我添加了该注释,因为我在几个没有引号的浏览器中尝试过它,但它完全失败了。我认为问题在于,如果没有至少一个引号,它是模棱两可的,因为它可以被解释为名称为 Sex][value=M 的输入 @stevec 括号在不带引号的属性中是无效的,正是出于这个原因。此示例适用于 Firefox 和 Chrome:jsfiddle.net/o2abekdh/3

以上是关于在 CSS 中指定多个属性选择器的主要内容,如果未能解决你的问题,请参考以下文章

CSS选择器常见用法

CSS选择器常见用法

[转]CSS类选择器:一个元素同时使用多个类选择器

CSS3选择器入门

CSS-属性&&选择器

CSS选择符有哪些?哪些属性可以继承?