J'ai un formulaire avec des boutons radio qui sont sur la même ligne que leurs étiquettes. Les boutons radio ne sont cependant pas alignés verticalement avec leurs étiquettes comme indiqué dans la capture d'écran ci-dessous.
Comment puis-je aligner verticalement les boutons radio avec leurs étiquettes?
Éditer:
Voici le code html:
<input checked="checked" type="radio" name="user_level" id="rd1" value="1"/>
<label for="rd1">radio 1</label><br/>
<input type="radio" name="user_level" id="rd2" value="2"/>
<label for="rd2">radio 2</label><br/>
<input type="radio" name="user_level" id="rd3" value="3"/>
<label for="rd3">radio 3</label><br/>
Et le code css:
label{
padding:5px;
color:#222;
font-family:corbel,sans-serif;
font-size: 14px;
margin: 10px;
}
Réponses:
Essaye ça:
la source
height= 100%;
car mon élément parent ne définissait pas explicitement la hauteur.Mettez de la classe pour toutes les radios. Cela fonctionnera pour tous les boutons radio de la page html.
Violon
la source
padding: 0; margin: 0
aux éléments d'entrée, et il semble nécessaire pour obtenir le bon alignement.Je sais que j'avais choisi la réponse de menuka devinda, mais en regardant les commentaires ci-dessous, je suis d'accord et j'ai essayé de trouver une meilleure solution. J'ai réussi à trouver cela et à mon avis c'est une solution beaucoup plus élégante:
Merci à tous ceux qui ont offert une réponse, votre réponse n'est pas passée inaperçue. Si vous avez encore d'autres idées, n'hésitez pas à ajouter votre propre réponse à cette question.
la source
essayez d'ajouter
vertical-align:top
dans le cssTest: http://jsfiddle.net/muthkum/heAWP/
la source
font-size
essayez d'utiliserdisplay:flex
. Voici une démo, jsfiddle.net/et8z47q5Pourrait aussi ajouter un peu de flexibilité aux réponses.
la source
Vous pouvez faire comme ceci:
DEMOla source
Quelque chose comme ça devrait fonctionner
CSS:
la source
Je suis juste aligner le milieu vertical des boîtes avec la ligne de base de la boîte parent plus la moitié de la hauteur x (en.wikipedia.org/wiki/X-height) du parent.
la source
Beaucoup de ces réponses disent à utiliser
vertical-align: middle;
, ce qui rapproche l'alignement mais pour moi, il est toujours décalé de quelques pixels. La méthode que j'ai utilisée pour obtenir un véritable alignement 1 à 1 entre les étiquettes et les entrées radio est la suivante, avecvertical-align: top;
:la source
J'aime mettre les entrées à l'intérieur des étiquettes (bonus supplémentaire: maintenant vous n'avez plus besoin de l'
for
attribut sur l'étiquette), et mettrevertical-align: middle
sur l'entrée.(C'est
-2px margin-top
une question de goût.)Une autre option que j'aime beaucoup est d'utiliser une table. (Tenez vos fourches! C'est vraiment sympa!) Cela signifie que vous devez ajouter l'
for
attribut à toutes vos étiquettes etid
à vos entrées. J'avais recommandé cette option pour les étiquettes avec un long contenu textuel, sur plusieurs lignes.la source
Bien que je sois d'accord, les tableaux ne doivent pas être utilisés pour les mises en page de conception contrairement à la croyance populaire, ils passent la validation. autrement dit, la balise table n'est pas obsolète. La meilleure façon d'aligner les boutons radio est d'utiliser le CSS central d'alignement vertical avec des marges ajustées sur les éléments d'entrée.
la source
Ajouter
display:inline-block
des étiquettes et leur donnerpadding-top
réglerait ce problème, je pense. En outre, il suffit de définirline-height
les étiquettes sur les étiquettes.la source
il y a plusieurs façons, je préférerais utiliser une table en html. vous pouvez ajouter deux colonnes trois rangées de table et placer les boutons radio et l'étiquette.
la source
.tablecell{dispay:table-cell;} ... <div class="tablecell">
semble plus comme une solution de contournement bancale pour les personnes qui ne veulent pas admettre qu'elles utilisent des tables ...