Ответы:
.button:active:hover:not([disabled]) {
/*your styles*/
}
Вы можете попробовать это ..
Почему бы не использовать атрибут «отключен» в CSS. Это должно работать во всех браузерах.
button[disabled]:hover {
background: red;
}
button:hover {
background: lime;
}
.button[disabled], .button[disabled]:hover, .button[disabled]:focus, .button[disabled]:active {}
Подход с более низкой специфичностью, который работает в большинстве современных браузеров (IE11 + и исключает некоторые мобильные браузеры Opera и IE - http://caniuse.com/#feat=pointer-events ):
.btn {
/* base styles */
}
.btn[disabled]
opacity: 0.4;
cursor: default;
pointer-events: none;
}
.btn:hover {
color: red;
}
pointer-events: none
Правило отключит парения; вам не нужно повышать специфичность с помощью .btn[disabled]:hover
селектора, чтобы свести на нет стиль наведения.
(К вашему сведению, это простые события указателя HTML, а не спорные события указателя устройств абстрагирования)
В sass (scss):
button {
color: white;
cursor: pointer;
border-radius: 4px;
&:disabled{
opacity: 0.4;
&:hover{
opacity: 0.4; //this is what you want
}
}
&:hover{
opacity: 0.9;
}
}
Если вы используете LESS
или Sass
, вы можете попробовать это:
.btn {
&[disabled] {
opacity: 0.6;
}
&:hover, &:active {
&:not([disabled]) {
background-color: darken($orange, 15);
}
}
}
Одним из способов является добавление неполного класса при отключении кнопок и переопределении состояний наведения и активного состояния для этого класса в css. Или удаление класса при отключении и указании hover и активных псевдо-свойств для этого класса только в css. В любом случае, это, скорее всего, не может быть сделано чисто с помощью css, вам нужно использовать немного js.
:not()
селектор, но опять же, он поддерживается только начиная с IE9. См .: developer.mozilla.org/en-US/docs/Web/CSS/:not