Comment styliser une case à cocher en utilisant CSS
P粉252116587
2023-08-23 12:39:36
<p>J'essaie de styliser une case à cocher en utilisant ce qui suit : </p>
<p><br /></p>
<pre class="brush:html;toolbar:false;"><input type="checkbox" style="border:2px dotted #00f;display:block;background:#ff0000; />< /pré>
<p><br /></p>
<p>Mais le style n’a pas été appliqué. La case à cocher affiche toujours son style par défaut. Comment lui donner un style spécifique ? </p>
En utilisant la nouvelle fonctionnalité fournie avec la pseudo-classe
:after
和:before
, vous pouvez obtenir des effets de case à cocher personnalisés très intéressants. L'avantage est que vous n'avez rien d'autre à ajouter au DOM, juste la case à cocher standard.Veuillez noter que cela ne fonctionne que sur les navigateurs compatibles. Je pense que cela est dû au fait que certains navigateurs ne vous permettent pas de définir
:after
和:before
sur les éléments d'entrée. Malheureusement, cela signifie qu'actuellement, seuls les navigateurs WebKit sont pris en charge. Firefox + Internet Explorer permet toujours aux cases à cocher de fonctionner, mais sans style, qui devrait changer à l'avenir (le code n'utilise pas le préfixe du fournisseur).Ceci est juste une solution de navigateur WebKit (Chrome, Safari, navigateurs mobiles)
Voir l'exemple Fiddle
Flip violon de style Webkit supplémentaire
Mise à jour :
Les réponses ci-dessous font référence à la situation avant que CSS 3 ne soit largement utilisé. Dans les navigateurs modernes, notamment Internet Explorer 9 et versions ultérieures, il est plus facile de créer des remplacements de cases à cocher avec vos styles préférés, sans utiliser JavaScript.
Voici quelques liens utiles :
Il convient de noter que le problème fondamental n’a pas changé. Vous ne pouvez toujours pas appliquer des styles (bordures, etc.) directement à l'élément de case à cocher et faire en sorte que ces styles affectent l'affichage de la case à cocher HTML. Ce qui a changé, cependant, c'est qu'il est désormais possible de masquer la case à cocher réelle et de la remplacer par votre propre élément de style, en utilisant uniquement du CSS. En particulier, puisque CSS prend désormais largement en charge les sélecteurs
:checked
, vous pouvez effectuer des remplacements reflétant correctement l'état coché de la case.Ancienne réponse
Ceci est un article utile sur le style des cases à cocher. Fondamentalement, cet auteur a constaté que cela varie énormément d'un navigateur à l'autre et, peu importe la façon dont vous le stylisez, de nombreux navigateurs affichent toujours la case à cocher par défaut. Il n’y a donc vraiment pas de solution simple.
Il n'est pas difficile d'imaginer une solution de contournement où vous pourriez utiliser JavaScript pour superposer une image sur la case à cocher, puis cliquer sur l'image pour cocher la vraie case. Les utilisateurs sans JavaScript verront la case à cocher par défaut.
Modifié pour ajouter : voici un joli script qui fait cela pour vous ; il masque le véritable élément de case à cocher, le remplace par une portée stylisée et redirige l'événement de clic.