Antworten:
Sie können Folgendes verwenden : Aktivierte Pseudoklasse, aber Notice unterstützt IE<9
dies nicht :
button:hover:enabled{
/*your styles*/
}
button:active:enabled{
/*your styles*/
}
button:hover:enabled
schien in meinem Fall nicht zu funktionieren. Verwenden der IE9-Emulation unter IE11.
.button:active:hover:not([disabled]) {
/*your styles*/
}
Sie können dies versuchen ..
Warum nicht das Attribut "disabled" in CSS verwenden? Dies muss in allen Browsern funktionieren.
button[disabled]:hover {
background: red;
}
button:hover {
background: lime;
}
.button[disabled], .button[disabled]:hover, .button[disabled]:focus, .button[disabled]:active {}
Ein Ansatz mit geringerer Spezifität, der in den meisten modernen Browsern funktioniert (IE11 + und mit Ausnahme einiger mobiler Opera- und IE-Browser - http://caniuse.com/#feat=pointer-events ):
.btn {
/* base styles */
}
.btn[disabled]
opacity: 0.4;
cursor: default;
pointer-events: none;
}
.btn:hover {
color: red;
}
Die pointer-events: none
Regel deaktiviert den Schwebeflug. Sie müssen die Spezifität nicht mit einem .btn[disabled]:hover
Selektor erhöhen , um den Hover-Stil aufzuheben.
(Zu Ihrer Information, dies sind die einfachen HTML-Zeigerereignisse, nicht die umstrittenen Zeigerereignisse für abstrakte Eingabegeräte.)
In 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;
}
}
Wenn Sie LESS
oder verwenden Sass
, können Sie Folgendes versuchen:
.btn {
&[disabled] {
opacity: 0.6;
}
&:hover, &:active {
&:not([disabled]) {
background-color: darken($orange, 15);
}
}
}
Eine Möglichkeit besteht darin, eine bestimmte Klasse hinzuzufügen, während Schaltflächen deaktiviert und der Hover- und der aktive Status für diese Klasse in CSS überschrieben werden. Oder entfernen Sie eine Klasse, wenn Sie die Hover- und aktiven Pseudo-Eigenschaften für diese Klasse nur in CSS deaktivieren und angeben. In beiden Fällen kann dies wahrscheinlich nicht nur mit CSS durchgeführt werden. Sie müssen ein wenig js verwenden.
:not()
Selektor, der aber erst seit IE9 unterstützt wird. Siehe: developer.mozilla.org/en-US/docs/Web/CSS/:not