Style d'entrée des cases à cocher CSS


178

Tout style pour inputaffecte chaque élément d'entrée. Existe-t-il un moyen de spécifier le style à appliquer uniquement aux cases à cocher sans appliquer une classe à chaque élément de case à cocher?

Réponses:


312

Avec CSS 2, vous pouvez faire ceci:

input[type='checkbox'] { ... }

Cela devrait être assez largement soutenu maintenant. Voir le support pour les navigateurs


18
Je crois que IE 7 et plus prennent en charge les sélecteurs d'attributs, qui sont en fait CSS 2.1. quirksmode.org/css/contents.html
TJ L

2
@realtebo: Notez que de nombreux styles (bordure, arrière-plan, etc.) ne peuvent pas être appliqués directement aux cases à cocher HTML.
Roy Tinker

1
@RoyTinker Vous utiliseriez outline, non border, pour les cases à cocher.
TylerH

29

Je crée ma propre solution sans étiquette

input[type=checkbox] {
         position: relative;
	       cursor: pointer;
    }
    input[type=checkbox]:before {
         content: "";
         display: block;
         position: absolute;
         width: 16px;
         height: 16px;
         top: 0;
         left: 0;
         border: 2px solid #555555;
         border-radius: 3px;
         background-color: white;
}
    input[type=checkbox]:checked:after {
         content: "";
         display: block;
         width: 5px;
         height: 10px;
         border: solid black;
         border-width: 0 2px 2px 0;
         -webkit-transform: rotate(45deg);
         -ms-transform: rotate(45deg);
         transform: rotate(45deg);
         position: absolute;
         top: 2px;
         left: 6px;
}
<input type="checkbox" name="a">
<input type="checkbox" name="a">
<input type="checkbox" name="a">
<input type="checkbox" name="a">

input[type=checkbox] {
         position: relative;
	       cursor: pointer;
    }
    input[type=checkbox]:before {
         content: "";
         display: block;
         position: absolute;
         width: 20px;
         height: 20px;
         top: 0;
         left: 0;
         background-color:#e9e9e9;
}
input[type=checkbox]:checked:before {
         content: "";
         display: block;
         position: absolute;
         width: 20px;
         height: 20px;
         top: 0;
         left: 0;
         background-color:#1E80EF;
}
    input[type=checkbox]:checked:after {
         content: "";
         display: block;
         width: 5px;
         height: 10px;
         border: solid white;
         border-width: 0 2px 2px 0;
         -webkit-transform: rotate(45deg);
         -ms-transform: rotate(45deg);
         transform: rotate(45deg);
         position: absolute;
         top: 2px;
         left: 6px;
}
<input type="checkbox" name="a">
<input type="checkbox" name="a">
<input type="checkbox" name="a">
<input type="checkbox" name="a">


Comment faire avec le fond gris comme dans cette image ( i.stack.imgur.com/Q23fy.png ), si vous pouvez regarder mon post ( pt.stackoverflow.com/questions/436890/estilizar-checkbox ). Merci.
Tiago le

Fantastique! Pouvez-vous mettre la réponse dans mon message pour que je la marque comme terminé?
Tiago le

1
Après des heures de recherche et de test, c'est la seule chose qui a fonctionné pour moi. Merci!
Mark

1
Exemples impressionnants
Adrian Grygutis

24

Quelque chose que j'ai récemment découvert pour le style des boutons radio ET des cases à cocher. Avant, je devais utiliser jQuery et d'autres choses. Mais c'est stupidement simple.

input[type=radio] {
    padding-left:5px;
    padding-right:5px;
    border-radius:15px;

    -webkit-appearance:button;

    border: double 2px #00F;

    background-color:#0b0095;
    color:#FFF;
    white-space: nowrap;
    overflow:hidden;

    width:15px;
    height:15px;
}

input[type=radio]:checked {
    background-color:#000;
    border-left-color:#06F;
    border-right-color:#06F;
}

input[type=radio]:hover {
    box-shadow:0px 0px 10px #1300ff;
}

Vous pouvez faire la même chose pour une case à cocher, évidemment changer le input[type=radio]en input[type=checkbox]et changer border-radius:15px;en border-radius:4px;.

J'espère que cela vous sera quelque peu utile.


Vraiment bien, dommage que ça ne marche pas tant sur Opera ni IE = (
Michel Ayres

1
Si vous souhaitez appliquer votre propre style à une case à cocher / une entrée, consultez mon article de blog sur les éléments d'entrée personnalisés via CSS . Ensuite, vous pouvez le styliser comme vous le souhaitez avec CSS uniquement, y compris une solution de secours IE8.
Felix Hagspiel

8

Les cours fonctionnent également bien, tels que:

<style>
  form input .checkbox
  {
    /* your checkbox styling */
  }
</style>

<form>
  <input class="checkbox" type="checkbox" />
</form>

Il n'est probablement pas nécessaire d'imbriquer la .checkbox dans le formulaire car il est peu probable que vous trouviez une case à cocher en dehors d'un formulaire. Entrez également .checkbox devrait être input.checkbox
Duncan Walker

@DuncanWalker Je ne l'ai pas testé, mais les formbalises ne seraient-elles pas nécessaires pour lier le contrôle d'entrée à un contrôle de soumission par défaut?
Jim Fell le

1
@Jim Fell cela ne fonctionne pas. Si je crée deux classes différentes pour deux cases à cocher de styles différents, c'est-à-dire .checkbox1 [input = 'checkbox'] et .checkbox2 [input = 'checkbox'], les styles affecteront toujours les deux, peu importe… comment vous assurez-vous que les styles sont séparés?
Krys

@Krys Vous devez donner à vos éléments de case à cocher différents noms de classe.
Jim Fell du

4

Vous pouvez appliquer uniquement à certains attributs en faisant:

input[type="checkbox"] {...}

Ça l'explique ici .


4
input[type="checkbox"] {
 /* your style */
}

Mais cela ne fonctionnera que pour les navigateurs sauf IE7 et inférieurs, pour ceux que vous devrez utiliser une classe.


en dessous de IE7 c'est, IE7 lui-même convient aux sélecteurs. Testé et voir ici: kimblim.dk/css-tests/selectors
Frank Nocke

3

Trident fournit le ::-ms-checkpseudo-élément pour les commandes de case à cocher et de bouton radio. Par exemple:

<input type="checkbox">
<input type="radio">

::-ms-check {
    color: red;
    background: black;
    padding: 1em;
}

Cela s'affiche comme suit dans IE10 sous Windows 8:

entrez la description de l'image ici


2

Comme IE6 ne comprend pas les sélecteurs d'attributs, vous pouvez combiner un script uniquement vu par IE6 (avec des commentaires conditionnels) et jQuery ou IE7.js par Dean Edwards.

IE7 (.js) est une bibliothèque JavaScript permettant à Microsoft Internet Explorer de se comporter comme un navigateur conforme aux normes. Il corrige de nombreux problèmes HTML et CSS et permet au PNG transparent de fonctionner correctement sous IE5 et IE6.

Le choix d'utiliser des classes ou jQuery ou IE7.js dépend de vos goûts et dégoûts et de vos autres besoins (peut-être la transparence PNG-24 sur tout votre site sans avoir à compter sur PNG-8 avec une transparence complète qui se replie sur la transparence 1 bit sur IE6 - créé uniquement par Fireworks et pngnq, etc.)


1

Bien que CSS vous fournisse un moyen de créer le style spécifique au type de case à cocher ou à un autre type, il y aura des problèmes avec les navigateurs qui ne le prennent pas en charge.

Je pense que votre seule option dans ce cas sera d'appliquer des cours à vos cases à cocher.

ajoutez simplement la classe = "case à cocher" à vos cases à cocher.

Créez ensuite ce style dans votre code css.

Une chose que vous pourriez faire est la suivante:

main.css

input[type="checkbox"] { /* css code here */ }

ie.css

.checkbox{ /* css code here for ie */ }

Ensuite, utilisez le css spécifique à IE:

<!--[if lt IE 7]>
   <link rel="stylesheet" type="text/css" href="ie.css" />
<![endif]-->

Vous devrez toujours ajouter la classe pour qu'elle fonctionne dans IE, et elle ne fonctionnera pas dans d'autres navigateurs non-IE qui ne prennent pas en charge IE. Mais cela rendra votre site Web avant-gardiste avec le code css et au fur et à mesure que IE sera pris en charge, vous pourrez supprimer le code css spécifique ie ainsi que les classes css des cases à cocher.


merci pour le conseil sur la feuille de style 2. bien que j'essaie d'éviter ce genre de chose, je pense que je vais simplement créer un style pour la case à cocher et c'est tout ...
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.