Respuestas:
Puede usar : pseudo-class habilitada , pero el aviso IE<9
no lo admite :
button:hover:enabled{
/*your styles*/
}
button:active:enabled{
/*your styles*/
}
button:hover:enabled
No parece funcionar en mi caso. Usando la emulación IE9 bajo IE11.
.button:active:hover:not([disabled]) {
/*your styles*/
}
Puedes probar esto ...
¿Por qué no utilizar el atributo "deshabilitado" en CSS? Esto debe funcionar en todos los navegadores.
button[disabled]:hover {
background: red;
}
button:hover {
background: lime;
}
.button[disabled], .button[disabled]:hover, .button[disabled]:focus, .button[disabled]:active {}
Un enfoque de menor especificidad que funciona en la mayoría de los navegadores modernos (IE11 +, y excluyendo algunos navegadores móviles Opera e IE - 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
regla deshabilitará el desplazamiento; No necesitará aumentar la especificidad con un .btn[disabled]:hover
selector para anular el estilo de desplazamiento.
(Para su información, estos son los simples eventos de puntero HTML, no los polémicos eventos de puntero de dispositivos de entrada de abstracción)
En 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;
}
}
Si está utilizando LESS
o Sass
, puede probar esto:
.btn {
&[disabled] {
opacity: 0.6;
}
&:hover, &:active {
&:not([disabled]) {
background-color: darken($orange, 15);
}
}
}
Una forma es agregar una clase particular mientras deshabilita los botones y anula el desplazamiento y los estados activos para esa clase en css. O eliminar una clase al deshabilitar y especificar el desplazamiento y las pseudo propiedades activas en esa clase solo en css. De cualquier manera, es probable que no se pueda hacer únicamente con css, deberá usar un poco de js.
:not()
selector, pero, de nuevo, solo es compatible desde IE9 también. Ver: developer.mozilla.org/en-US/docs/Web/CSS/:not