2016-07-21 6 views
0

Wenn ich ein blaues div, dass jemand anderes den Code besitzt fürGibt es eine Möglichkeit, in CSS auf einen Pseudo-Klassenstil zurückzugreifen?

.stuff { 
    background-color: blue; 
} 

Und ich will es auf schweben

.stuff:hover { 
    background-color: red; 
} 

rot sein, aber dann möchte ich in der Lage sein, eine Klasse hinzuzufügen für es zurück zu gehen Zustand in seinem nicht-Pseudoklasse:

.stuff.otherclass:hover { 
    background-color: unset; /* Want blue in this case */ 
} 

gibt es eine CSS Möglichkeit, zu einem vorher pseudo-Klasse Zustand zurückgehen?

Codepen Demo: http://codepen.io/anon/pen/EyEWww

Antwort

1

Der einzige Weg, die Kaskade zurückzurollen die revert Schlüsselwort wird verwendet, aber es rollt zurück in einen anderen Ursprung.

Es gibt keine Möglichkeit, den 2. Wert im output of the cascade zu cascaded value zu machen, den Gewinner ignorierend.

Stattdessen können Sie Ihre Wähler ändern und die :not() Pseudo-Klasse verwenden:

.stuff { 
    background-color: blue; 
} 
.stuff:not(.otherclass):hover { 
    background-color: red; 
} 

Oder alternativ Vorteil .stuff.otherclass:hover nehmen mehr Spezifität als .stuff:hover

.stuff, .stuff.otherclass:hover { 
    background-color: blue; 
} 
.stuff:hover { 
    background-color: red; 
} 
+0

'revert' völlig arbeitete in die oben stehende Codepen-Demo. Aus der Spezifikation scheint das nicht der Fall zu sein? – mxiong

+0

@mxiong 'revert' sollte nicht funktionieren, es sei denn, Sie haben ein Stylesheet auf Benutzerebene mit dieser Farbe. Und welchen Browser benutzen Sie? Die Browserunterstützung für 'revert' ist derzeit vernachlässigbar. – Oriol

+0

Ich habe total gelogen. Die: nicht Workaround sollte für meinen Anwendungsfall gut genug sein. Ein wenig traurig, dass dies keine CSS-Funktion ist, aber – mxiong