2015-09-11 26 views
3

我執行下面的CSS選擇器選擇,除了那些類包含Word圖標

選擇除了那些類的所有元素span所有span元素包含了Word圖標

所以下面似乎是工作:

.music-site-refresh span:not([class*="icon-"]) { 
    font-family:Montserrat, sans-serif; 
} 

但我認爲這應該是這樣的:

.music-site-refresh span:not(span[class*="icon-"]) { 
    font-family:Montserrat, sans-serif; 
} 

但第二個在我的測試平臺中不起作用。

任何人都可以解釋我哪一個是正確的,爲什麼?

這裏是爲了舉例一些barfed HTML:

<span class="cmImageSliderIndicatorActive icon-circle-blank" data-set="0"></span> 

<div class="janrain-share-providerslist-provider-image janrain-provider-icon-grayscale-email"></div> 

有更多的圖標。它不是一個icon類,這就是爲什麼我使用class*

+1

恕我直言,你應該像這樣:'.music-site-refresh span:not(.icon)'與Mozilla開發者網絡有關':not'的CSS選擇器[here](https:// developer。 mozilla.org/fr/docs/Web/CSS/%3Anot) –

+0

這將是驚人的,但字體真棒圖標來像icon-something – Claudiordgz

+1

btw我無法控制頁面的內容 – Claudiordgz

回答

3

在CSS中,:not被認爲是僞類,這使它成爲同類別其他僞類,如:hover:focus

我認爲在考慮其他僞類之一時解釋這個更有意義。讓我們看看:hover作爲例子。當你使用:hover編寫選擇器時,它看起來像這樣:

div:hover {} 

你可以看到冒號將hover pseduo-class加入到元素..這就是「僞類」名稱來自哪裏..它不是一個真正的CSS類,但它的行爲方式與一樣。它作爲修飾符應用於選擇器中的原始元素。

所以現在我們再來看看:not。當您使用在選擇這個僞類,它加入到它..所以說:not(span.icon)可以種被認爲寫出來是這樣的,簡化它,公平位:

not spanspan.icon 

其沒有按真的沒有道理。

+0

這是有道理的......圖標不是'圖標'它們是'圖標郵件''圖標廣場'或'icon-gray-box'。我無法控制以前的內容。但你的解釋是頂尖的。公認 – Claudiordgz