Je souhaite ajouter un style à l'étiquette sélectionnée d'un bouton radio:
HTML:
<div class="radio-toolbar">
<label><input type="radio" value="all" checked>All</label>
<label><input type="radio" value="false">Open</label>
<label><input type="radio" value="true">Archived</label>
</div>
CSS
.radio-toolbar input[type="radio"] {display:none;}
.radio-toolbar label {
background:Red;
border:1px solid green;
padding:2px 10px;
}
.radio-toolbar label + input[type="radio"]:checked {
background:pink !important;
}
Des idées sur ce que je fais mal?
:checked
sélecteur..foo { ... }
display:none;
les navigateurs le feront fonctionner avec le clavier très bien.Si vous voulez vraiment mettre les cases à cocher à l'intérieur de l'étiquette, essayez d'ajouter une balise span supplémentaire, par exemple.
HTML
CSS
Cela définira les arrière-plans de tous les frères et sœurs du bouton radio sélectionné.
la source
for
Vous utilisez un sélecteur de frère adjacent (
+
) lorsque les éléments ne sont pas des frères. L'étiquette est le parent de l'entrée, pas son frère.CSS n'a aucun moyen de sélectionner un élément en fonction de ses descendants (ni de tout ce qui le suit).
Vous devrez vous tourner vers JavaScript pour résoudre ce problème.
Vous pouvez également réorganiser votre balisage:
la source
Vous pouvez ajouter une étendue à votre html et css.
Voici un exemple de mon code ...
HTML (JSX):
CSS pour faire disparaître le bouton radio standard à l'écran et superposer l'image du bouton personnalisé:
la source
Comme il n'y a actuellement aucune solution CSS pour styliser un parent, j'utilise ici une simple jQuery pour ajouter une classe à une étiquette avec une entrée cochée à l'intérieur.
Ne pas oublier de donner l'étiquette de l'entrée vérifiée pré-classe
checkedlabel
tropla source
Voici une solution accessible
la source