2012-07-22 30 views
90

utilizo vuelo estacionario, activa y discapacitados al estilo de botones.Hover y activa sólo cuando no desactivado

Pero el problema es que cuando el botón está deshabilitado, el fl ash y los estilos activos siguen vigentes.

¿Cómo aplicar el control deslizante y activo solo en los botones habilitados?

Respuesta

153

Puede utilizar :enabled pseudo-clase, pero aviso IE<9 no lo soporta:

button:hover:enabled{ 
    /*your styles*/ 
} 
button:active:enabled{ 
    /*your styles*/ 
} 
+3

Mi aplicación sólo funciona en cromo por lo que todo está bien. – Ali

+3

También está el selector ': not()', pero de nuevo, solo es compatible desde IE9 también. Ver: https://developer.mozilla.org/en-US/docs/Web/CSS/:not – jnns

+0

'botón: hover: enabled' no parece funcionar en mi caso. Usando la emulación IE9 bajo IE11. – Neolisk

1

Una forma es añadir una clase partcular al deshabilitar botones y anulando el vuelo estacionario y estados activos de 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 solo con CSS, tendrás que usar un poco de JS.

+3

No deseo usar JS – Ali

20

¿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; 
} 
+9

Cubra todos los estados desactivados seleccionándolos todos en una línea: '.button [disabled], .button [disabled]: hover, .button [disabled]: focus, .button [ disabled]: active {} ' – DBK

23
.button:active:hover:not([disabled]) { 
    /*your styles*/ 
} 

Puede probar este ..

+0

Esta es una buena solución para cuando quiere que el estado" hover disabled "se vea idéntico al estado" no desactivado ". –

+0

I <3 esta solución. me permite tener lo siguiente: cierne y Ben

6

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; 
    } 
} 
1

Si está utilizando LESS o Sass, Usted puede intentar esto:

.btn { 
    &[disabled] { 
    opacity: 0.6; 
    } 
    &:hover, &:active { 
    &:not([disabled]) { 
     background-color: darken($orange, 15); 
    } 
    } 
} 
2

A menor especificidad enfoque que funciona en la mayoría de los navegadores modernos (EI11 +, y la exclusión de algunos navegadores móviles 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; 
} 

La regla pointer-events: none inhabilitará vuelo estacionario; no será necesario aumentar la especificidad con un selector .btn[disabled]:hover para anular el estilo de desplazamiento.

(FYI, esto es el simple puntero-eventos HTML, no los contenciosos-dispositivos de entrada-abstracción-puntero eventos)

Cuestiones relacionadas