Risposte:
.button:active:hover:not([disabled]) {
/*your styles*/
}
Puoi provare questo ..
Perché non usare l'attributo "disabilitato" in css. Questo deve funzionare su tutti i browser.
button[disabled]:hover {
background: red;
}
button:hover {
background: lime;
}
.button[disabled], .button[disabled]:hover, .button[disabled]:focus, .button[disabled]:active {}
Un approccio con specificità inferiore che funziona nella maggior parte dei browser moderni (IE11 + ed escludendo alcuni browser Opera e IE mobili - http://caniuse.com/#feat=pointer-events ):
.btn {
/* base styles */
}
.btn[disabled]
opacity: 0.4;
cursor: default;
pointer-events: none;
}
.btn:hover {
color: red;
}
La pointer-events: none
regola disabilita il passaggio del mouse; non sarà necessario aumentare la specificità con un .btn[disabled]:hover
selettore per annullare lo stile al passaggio del mouse.
(Cordiali saluti, questi sono i semplici eventi-puntatore HTML, non i controversi eventi-puntatore-input-input-dispositivi)
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;
}
}
Se stai usando LESS
o Sass
, puoi provare questo:
.btn {
&[disabled] {
opacity: 0.6;
}
&:hover, &:active {
&:not([disabled]) {
background-color: darken($orange, 15);
}
}
}
Un modo è quello di aggiungere una classe partcular disabilitando i pulsanti e sovrascrivendo gli stati hover e attivi per quella classe in css. O rimuovendo una classe quando si disabilita e si specifica l'hover e le proprietà pseudo attive su quella classe solo in CSS. Ad ogni modo, probabilmente non può essere fatto esclusivamente con CSS, dovrai usare un po 'di js.
:not()
selettore, ma, di nuovo, è supportato solo da IE9. Vedi: developer.mozilla.org/en-US/docs/Web/CSS/:not