2012-10-20 55 views
4

我試圖選擇一切,但我目前點擊的東西。僞類的功能:不僞類選擇器 - css問題

基本上,我有一堆.node-teaser元素都是相同的樣式和相同的類,只有他們在:active上變大。

當我點擊其中一個時,我想要「重置」所有其他動畫/轉換,這樣只有當前的動畫/轉換變得更大。所以,基本上,我想:

.node-teaser:not(.node-teaser:active) { 
    max-height: 50px; 
    ..... 
} 

但是,我不能用僞類作爲論據:not()。我如何以不同的方式解決問題,或者我錯過了什麼?

由於它們是由Drupal生成的,因此我被困在類中,而且我不想更改我的主題的PHP模板。而且,我想證明這對於我自己而言是純CSS的工作,但我被卡住了。

有這個~選擇器。如果在當前元素之前有一些選擇元素的每一個元素(與選擇元素之後的所有元素相對應的波形符選擇器),我基本上可以將這兩個元素相加,之前以及之後的所有內容都是除了當前元素之外的所有元素。我不認爲有一個選擇器可以與~相反。如果我錯了,請糾正我的錯誤!

編輯: 因爲我似乎是相當混亂^ ^(對不起,那):上adornis.de我想只有一次一個項目被擴大,當你點擊第二個,剩下的應該關閉。通常情況下:主動立即關閉,但我推遲了過渡。

+0

Something喜歡這個? HTTP://的jsfiddle。net/pk8Ld/ – Blender

+0

那麼,只要你點擊包裝或者其中一個內容元素,我就可以「添加」這些解決方案,但是我需要一種基本上添加點東西的方法。因此,如果您的示例在包裝未處於活動狀態時將更改其他div的顏色,那將是解決方案,但它會同時更改顏色(這不會幫助我重置:|) 無論如何,告訴我,如果我不清楚 – Yorrd

+0

您必須爲此使用JavaScript。我對你實際想要做的事有些困惑。 – Blender

回答

2

解決辦法是:你可以使用僞類,你不能讓他們有一個真正的類合併。

所以

.foo:not(.foo:active) {} 

不起作用,但

.foo:not(:active) {} 

作品就好:)

這並沒有解決我的問題,但我想這是很重要的理解。我仍然需要混合類和僞類來實現我的目標。

結論:你不能沒有JavaScript(還)這樣做

感謝BoltClock誰在評論回答了這個原來的職位:)

您已經運行到完全相同的問題,有人在其他日子做:你可以使用僞類在:not(),但在這種情況下,你要合併一個類和僞類,這是不好的

1

一個(我不會說是最漂亮的)的方式來做到這一點是恢復到默認值:

.node-teaser { 
    max-height: 50px; 
} 

.node-teaser:active { 
    max-height: auto; 
} 
+1

這正是我現在正在做的,但那不是'讓我有權重置其他動畫。我知道我不表達自己,但我不知道更好的方法:D 我想在啓動當前元素的最大高度動畫時重置其他動畫 – Yorrd