2012-06-15 134 views
3

裏面如果你有這樣的HTML元素,是不是其他元素

<div> 
    <span class="style-me">i want to be styled</span> 
</div> 
<div class="ignore-my-descendants"> 
    <span class="style-me">i want to be styled but my parent prevents it</span> 
</div>​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​ 

那麼這個CSS選擇器

.style-me:not(.ignore-my-descendants *) { 
    color: red; 
} 

將不匹配任何東西。也許是因爲:not()只接受這裏沒有給出的簡單選擇器(我不確定,希望你能告訴我真實的原因)。 是否有一個純CSS的方式來篩選出那些父母符合給定條件的元素?

編輯:我不想將任何值應用於要忽略的元素。 這很重要,因爲無法預見元素的所需display屬性值。

+1

正確的,這是因爲':不()'只接受簡單的選擇是CSS3的。 – BoltClock

回答

4

嗯...你正在選擇一個孩子,並要求匹配它的父母。將無法正常工作

有一個簡單的方法

.style-me { 
    color: red; 
} 

.ignore-my-descendants .style-me { 
     color: white; 
    } 
+0

這個解決方案的問題是我必須爲那些我想忽略的人設置樣式。當使用像display:none這樣的屬性時,這會帶來很多問題,因爲你無法知道元素的前一個值。 也許我的問題應該是「是否有一個選擇器來選擇那些不在另一個給定元素內的元素」 – Conic