2017-03-15 61 views
1

我不敢相信在我長時間寫CSS的時候,我從來沒有這樣做過,但是這讓我很難過。如果元素具有特定的CSS類,也是任何其他類

我有span.item-name,我想添加一些特定的樣式,只要這個元素有另一個類,它可以是任何類。

我試過span.item-name.*,它沒有辦法。這是可能的,我有什麼選擇?

回答

2

您可以使用屬性選擇器。 (見:https://www.w3.org/wiki/CSS/Selectors#Attribute_Selector 例如:

body>.item-name:before, b { 
 
    content:'Class name is: 'attr(class)'. '; 
 
    color:purple 
 
} 
 
p[class*="item-name"][class*=" "]:before { 
 
    color:green; 
 
} 
 
p[class^="item-name"][class*=" "]:before { 
 
    color:red; 
 
}
<p class="item-name"> The basic class</p> 
 
<p class="item-name another-class"> the basic class at first and then any other</p> 
 
<p class="another-class item-name any-more-class"> more than one class including <b>item-name</b> at any position</p>

+0

這是完美的。解決了我目前的問題,並且肯定會給我一些關於如何在未來實現這一目標的問題。謝謝! –

+0

我還沒有檢查過(我在手機上),但是

'? –

+0

@DavidThomas,p.item-name很好,問題是'選擇這個類時,除其他之外;) –

0

也許一些更多的代碼會有幫助,但是你不能爲css編寫函數,這聽起來像你所要求的。如果需要,您可以簡單地添加其他課程。

<span class="class1 class2">

1

我覺得this是你想要的,滾動,直到看到CSS [屬性* = 「值」]選擇部分。對你來說應該是這樣的:

span[class*=" item-name"], span[class*="item-name "] 

爲什麼選擇兩個?因爲*=搜索該具體的值,所以只有第一個選擇器<span class="item-name another-class">不符合標準。這樣你只需要搜索課堂,不知道它在class價值中的位置。

+0

啊,這看起來很完美。你只需要避免爲你的'.item-name'元素留下一個空格(當動態添加類時有時會發生這種錯誤)。這裏是[小提琴](https://jsfiddle.net/jackkoppa/fq5yqaa6/2/),表明在這種情況下會發生什麼(如預期的那樣,空格錯字會導致額外的選擇器被應用) –

+0

是的,我知道,但是除非提供JS,否則這是有限的。 – RompePC

+0

絕對的,完全同意。 –