474 votes

Comment aligner à droite les éléments div?

Le corps de mon document html se compose de 3 éléments, un bouton, un formulaire et un canevas. Je veux que le bouton et le formulaire soient alignés à droite et que le canevas reste aligné à gauche. Le problème est lorsque j'essaie d'aligner les deux premiers éléments, ils ne se suivent plus et sont plutôt côte à côte en horizontal, voici le code que j'ai pour le moment, je veux que le formulaire suive directement après le bouton à droite sans espace entre les deux.

#cTask {
  background-color: lightgreen;
}

#button {
  position: relative;
  float: right;
}

#addEventForm {
  position: relative;
  float: right;
  border: 2px solid #003B62;
  font-family: verdana;
  background-color: #B5CFE0;
  padding-left: 10px;
}

        Créer une tâche

      Nom du client: 
      Téléphone: 
      Adresse e-mail: 

      Votre navigateur ne prend pas en charge le canevas.

605voto

pstanton Points 8807

Les floats sont corrects, mais posent problème avec IE 6 & 7.
Je préfère utiliser ce qui suit sur la div intérieure :

margin-left: auto; 
margin-right: 0;

Voir le Bug de la Marge Double de IE pour plus de clarification.

3 votes

Solution parfaite! mieux que float car il préserve la hauteur

3 votes

Ne devrait pas utiliser px dans les valeurs 0.

6 votes

@ShellNinja pourquoi? Je sais que 0 est valide, cependant 0px l'est aussi... argumentez votre point pour qu'on apprenne quelque chose.

459voto

vantrung -cuncon Points 1658

Vous pouvez créer une division (div) qui contient à la fois le formulaire et le bouton, puis faire flotter la division sur la droite en définissant float: right;.

4 votes

Je n'aurais jamais pensé utiliser float. J'ai essayé margin-left: auto; mais cela n'a pas fonctionné, ce qui m'a surpris car l'élément que je veux aligner à droite est relatif.

3 votes

@DFSFOT L'inverse m'est arrivé. Je m'attendais à ce que float:right fonctionne mais margin-left: auto a fait l'affaire, merci.

2 votes

Cela n'a pas eu d'effet dans mon cas, le style="margin-left: auto;margin-right: 0;" l'a fait (crédits à @pstanton).

309voto

Michael Bushe Points 2891

Anciennes réponses. Une mise à jour : utilisez flexbox, cela fonctionne pratiquement dans tous les navigateurs maintenant.

  Je suis à droite

Et vous pouvez aller même plus loin, simplement :

  Gauche
  Droite

Et encore plus élaboré :

   Gauche
   Centre
  Droite

5 votes

Ça fonctionne, mais lorsque l'écran devient petit au lieu de s'empiler ils deviennent juste très étroits

7 votes

Vous devez ajouter une requête multimédia pour changer flex-direction de row à column au point de rupture que vous définissez. Vous voudrez probablement changer ou supprimer votre justify-content dans cet exemple sinon les éléments s'étireront vers le haut et le bas au lieu de vers la gauche et la droite.

35voto

Mladen Adamovic Points 151

Notez que bien que cette réponse n'est pas fausse, la méthodologie est très obsolète, écrite en 2015


Les autres réponses pour cette question ne sont pas si bonnes car float:right peut sortir d'une div parent (overflow: hidden pour le parent peut parfois aider) et margin-left: auto, margin-right: 0 n'a pas fonctionné pour moi dans des divs imbriquées complexes (je n'ai pas enquêté pourquoi).

J'ai découvert que pour certains éléments, text-align: right fonctionne, en supposant que cela fonctionne lorsque l'élément et le parent sont tous les deux inline ou inline-block.

Remarque : la propriété CSS text-align décrit comment le contenu en ligne comme le texte est aligné dans son élément de bloc parent. text-align ne contrôle pas l'alignement des éléments de bloc eux-mêmes, seulement leur contenu en ligne.

Un exemple :

        Je suis parent

        Légende pour parent

Voici un JS Fiddle.

1 votes

Cela a fonctionné pour moi pour aligner 3 images à droite avec des balises
entre elles.

33voto

jzilg Points 411

Vous pouvez utiliser flexbox avec flex-grow pour pousser le dernier élément vers la droite.

  Gauche
  Droite

4 votes

Je pense personnellement que c'est la bonne réponse pour 2020 :P

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