2016-07-21 2 views
0

Если у меня есть синий DIV, что кто-то владеет код дляЕсть ли способ вернуться к стилю без псевдокласса в CSS?

.stuff { 
    background-color: blue; 
} 

И я хочу, чтобы быть красным по наведению

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

Но я хочу, чтобы иметь возможность добавить класс для это вернуться к своему не-псевдо-класс состоянию:

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

есть ли вариант CSS идти обратно в состояние до псевдо-класса?

Codepen демо: http://codepen.io/anon/pen/EyEWww

ответ

1

Единственный способ откатить каскада с помощью ключевого слова revert, но откат другого происхождения.

Невозможно сделать 2-е значение в output of the cascadecascaded value, игнорируя победителя.

Вместо этого, вы можете изменить ваш селектор и использовать класс :not() псевдо:

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

Или, как вариант, воспользоваться .stuff.otherclass:hover имея больше конкретики, чем .stuff:hover

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

'revert' полностью работал в демо-версия codepen выше. Из спецификации кажется, что этого не должно быть? – mxiong

+0

@mxiong 'revert' не должен работать, если у вас нет таблицы стилей пользовательского уровня с этим цветом. И какой браузер вы используете? Поддержка браузера для 'revert' в настоящее время незначительна. – Oriol

+0

Я полностью солгал. Не обходное решение должно быть достаточно хорошим, хотя для моего варианта использования. Немного грустно, что это не спецификация CSS, хотя – mxiong

Смежные вопросы