112 votes

Comment aligner verticalement un bouton radio html avec son libellé?

J'ai un formulaire avec des boutons radio qui sont sur la même ligne que leurs étiquettes. Cependant, les boutons radio ne sont pas alignés verticalement avec leurs étiquettes comme le montre la capture d'écran ci-dessous.

Les boutons radio.

Comment puis-je aligner verticalement les boutons radio avec leurs étiquettes?

Éditer :

Voici le code html :

radio 1

radio 2

radio 3

Et le code css :

label{
    padding:5px;
    color:#222;
    font-family:corbel,sans-serif;
    font-size: 14px;
    margin: 10px;
}

1 votes

À quoi ressemble votre code actuellement?

0 votes

@ninjacoder Mettez à jour votre question avec le code.

177voto

zakangelle Points 2733

Essayez ceci :

input[type="radio"] {
  margin-top: -1px;
  vertical-align: middle;
}

9 votes

Cela a fonctionné pour moi cependant j'ai dû ajouter une height= 100%; car mon élément parent n'avait pas défini explicitement la hauteur.

1 votes

Cela semblait me donner la démarche la plus cohérente entre Mac, Windows et Linux, en utilisant Chrome, Firefox ou IE. De plus, j'ai remarqué que si je donnais du padding à mon label et mettais la radio à l'intérieur du label, alors je devais peut-être définir la marge supérieure à une valeur inférieure à -1px (comme -3px) en fonction de la quantité de padding que j'utilisais sur ce label. (J'aime donner à mes étiquettes de cases radio une couleur de survol et un effet de bordure arrondie pour les rendre plus attrayantes.)

3 votes

Pour expliquer pourquoi c'est la seule réponse correcte : Certains éléments en HTML ont des valeurs de marge ou de padding par défaut, comme les éléments

ou

  • ou les boutons radio. Vous pouvez le voir si vous passez en mode développeur (F12) et que vous survolez la balise avec votre souris. En fait, c'est un bon comportement, car le navigateur lui-même utilise CSS pour positionner des éléments prédéfinis que l'utilisateur peut ensuite réinitialiser. Mais cela peut être déroutant si vous ne savez pas pourquoi quelque chose est mal aligné en premier lieu. Ainsi, essayez toujours de remplacer les paramètres que vous n'avez pas définis, s'ils semblent étranges par défaut.

17voto

vusan Points 1789
input {
    display: table-cell;
    vertical-align: middle
}

Mettre une classe pour tous les boutons radio. Cela fonctionnera pour tous les boutons radio sur la page html.

Fiddle

0 votes

Il s'agit de loin de la meilleure solution que j'ai vue pour cela. L'alignement des étiquettes des boutons radio me tourmentait depuis des années jusqu'à ça. Ça fonctionne à chaque fois pour moi.

0 votes

Notez que cela se casse lorsque l'étiquette a plusieurs lignes de texte.

0 votes

Votre exemple Fiddle applique également padding: 0; margin: 0 aux éléments d'entrée, et il semble nécessaire pour obtenir le bon alignement.

16voto

ninjacoder Points 334

Je sais que j'avais sélectionné la réponse de menuka devinda mais en regardant les commentaires ci-dessous, j'ai concouru 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 :

input[type='radio'], label{   
    vertical-align: baseline;
    padding: 10px;
    margin: 10px;
 }

Merci à tous ceux qui ont proposé 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.

9voto

Muthu Kumaran Points 6665

Essayez d'ajouter vertical-align: top dans le css

label{
    padding:5px;
    color:#222;
    font-family:corbel,sans-serif;
    font-size: 14px;
    margin: 10px;
    vertical-align:top;
}​

Test: http://jsfiddle.net/muthkum/heAWP/

1 votes

Cela ne tient pas lorsque vous augmentez ou diminuez la taille de la police.

1 votes

@Protectorone C'est une réponse ancienne et spécifique à la question de l'OP. Si vous essayez de faire la même chose avec font-size, essayez d'utiliser display:flex. Voici un exemple, jsfiddle.net/et8z47q5

8voto

Shailender Arora Points 5611

Vous pouvez faire comme ceci :

input {
    vertical-align:middle;
}

label{
    color:#222;
    font-family:corbel,sans-serif;
    font-size: 14px;
}

0 votes

Très bien. Je voulais aligner le bouton au lieu de l'étiquette, et cela fait l'affaire.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X