J'utilise le survol , actif et désactivé pour styliser les boutons.
Mais le problème est que lorsque le bouton est désactivé, le survol et les styles actifs s'appliquent toujours.
Comment appliquer le survol et l'activer uniquement sur les boutons activés?
:not()
sélecteur, mais là encore, il n'est pris en charge que depuis IE9 également. Voir: developer.mozilla.org/en-US/docs/Web/CSS/:notbutton:hover:enabled
ne semble pas fonctionner dans mon cas. Utilisation de l'émulation IE9 sous IE11..button:active:hover:not([disabled]) { /*your styles*/ }
Vous pouvez essayer ceci.
la source
Pourquoi ne pas utiliser l'attribut "désactivé" en css. Cela doit fonctionner sur tous les navigateurs.
button[disabled]:hover { background: red; } button:hover { background: lime; }
la source
.button[disabled], .button[disabled]:hover, .button[disabled]:focus, .button[disabled]:active {}
Si vous utilisez
LESS
ouSass
, vous pouvez essayer ceci:.btn { &[disabled] { opacity: 0.6; } &:hover, &:active { &:not([disabled]) { background-color: darken($orange, 15); } } }
la source
Dans 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; } }
la source
Une approche à moindre spécificité qui fonctionne dans la plupart des navigateurs modernes (IE11 +, et à l'exclusion de certains navigateurs mobiles 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
pointer-events: none
règle désactivera le survol; vous n'aurez pas besoin d'augmenter la spécificité avec un.btn[disabled]:hover
sélecteur pour annuler le style de survol.(Pour info, ce sont les simples événements de pointeur HTML, pas les événements de pointeur de périphériques d'entrée abstraites litigieux)
la source
Une façon consiste à ajouter une classe particulière tout en désactivant les boutons et en remplaçant les états de survol et actif pour cette classe dans css. Ou en supprimant une classe lors de la désactivation et de la spécification du survol et des pseudo propriétés actives sur cette classe uniquement en css. Quoi qu'il en soit, cela ne peut probablement pas être fait uniquement avec css, vous devrez utiliser un peu de js.
la source