Відповіді:
Ви можете використовувати : увімкнений псевдоклас, але повідомлення IE<9
не підтримує його :
button:hover:enabled{
/*your styles*/
}
button:active:enabled{
/*your styles*/
}
button:hover:enabled
в моєму випадку, здавалося, не працює. Використання IE9 емуляції під IE11.
.button:active:hover:not([disabled]) {
/*your styles*/
}
Ви можете спробувати це ..
Чому б не використовувати атрибут "disabled" у 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
селектора, щоб скасувати стиль наведення курсора.
(FYI, це простий 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. Або видалення класу при відключенні та вказівці властивостей наведення та активного псевдо цього класу лише в css. Так чи інакше, це, ймовірно, не можна зробити просто з допомогою css, вам потрібно буде використовувати трохи js.
:not()
селектор, але знову ж таки, він підтримується лише з IE9. Дивіться: developer.mozilla.org/en-US/docs/Web/CSS/:not