Odpowiedzi:
.button:active:hover:not([disabled]) {
/*your styles*/
}
Możesz spróbować tego ..
Dlaczego nie użyć atrybutu „disabled” w css. To musi działać we wszystkich przeglądarkach.
button[disabled]:hover {
background: red;
}
button:hover {
background: lime;
}
.button[disabled], .button[disabled]:hover, .button[disabled]:focus, .button[disabled]:active {}
Podejście o niższej specyficzności, które działa w większości nowoczesnych przeglądarek (IE11 +, z wyłączeniem niektórych mobilnych przeglądarek Opera i 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: noneZasada wyłącza unosić; nie trzeba zwiększać swoistości za pomocą .btn[disabled]:hoverselektora, aby anulować styl aktywowania.
(FYI, to są proste zdarzenia wskaźnikowe HTML, a nie kontrowersyjne zdarzenia wskaźnikowe urządzeń pobierających dane wejściowe)
W 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;
}
}
Jeśli używasz LESSlub Sass, możesz spróbować:
.btn {
&[disabled] {
opacity: 0.6;
}
&:hover, &:active {
&:not([disabled]) {
background-color: darken($orange, 15);
}
}
}
Jednym ze sposobów jest dodanie klasy cząstkowej przy jednoczesnym wyłączeniu przycisków i przesłonięciu stanów najechania i aktywnych dla tej klasy w css. Lub usuwanie klasy podczas wyłączania i określania aktywowania i aktywnych pseudo właściwości tej klasy tylko w css. Tak czy inaczej, prawdopodobnie nie można tego zrobić wyłącznie za pomocą css, musisz użyć trochę js.
:not()selektor, ale z drugiej strony jest obsługiwany tylko od IE9. Zobacz: developer.mozilla.org/en-US/docs/Web/CSS/:not