2013-06-29 144 views
2

對於下面的HTML + CSS(http://jsfiddle.net/Gb3dh/1/):CSS選擇器不匹配

<input class="a" placeholder="here"/> 
<input class="b" role="x" placeholder="there"/> 

...

.a, .b { 
    font-style: italic; 
} 

[placeholder] input[role="x"] { 
    font-style=normal; 
} 

爲什麼 「字體樣式」, 「類= B」 輸入斜體?我希望第二個CSS選擇器(獲得任何帶有佔位符標題的項目以及輸入具有等於「x」的「title」屬性)的項目才能生效。

回答

5

的兩個問題:

  • 有一個在font-style=normal;=裏應該有一個:
  • [placeholder]不應該input[role="x"]之前,你已經做的方式,它與含有屬性placeholder的元素相匹配一個input具有屬性的元素role="x"

查看更新的JSFiddle (或下面的代碼):http://jsfiddle.net/Gb3dh/5/

.a, .b { 
    font-style: italic; 
} 

input[role="x"][placeholder] { 
    font-style:normal; 
} 
+3

感謝您對我的錯誤的幫助。雖然它違反了CSS選擇器規則,但它並不是'重要'嗎? –

+0

@Kevin你有一個點,你可以離開它。不管CSS語句的順序如何,代碼在沒有它的JSFiddle中似乎都能正常工作......這只是想到的第一件事情之一。 –

+2

!這裏不需要重要的東西。輸入[attr] [attr]比單個類名(0,0,1,0)更具體(0,0,2,1)。 http://css-tricks.com/specifics-on-css-specificity/ – Gus

1

您需要選擇更改爲

input[placeholder][role="x"] { 
    font-style=normal; 
} 

你的選擇意味着屬性role="x"輸入這是一個元素中具有屬性placeholder

3

應該input[role="x"][placeholder],您目前選擇將匹配的元素input[role="x"]內的元素具有[placeholder]屬性。

希望它有幫助。