Comment aligner 3 divs (gauche/centre/droite) dans une autre div?
Je veux avoir 3 divs alignés à l'intérieur d'un conteneur div, quelque chose comme ceci:
[[LEFT] [CENTER] [RIGHT]]
Container div est 100% Large (pas de largeur définie), et center div doit rester au centre après le redimensionnement du conteneur.
Donc j'ai mis:
#container{width:100%;}
#left{float:left;width:100px;}
#right{float:right;width:100px;}
#center{margin:0 auto;width:100px;}
, Mais il devient:
[[LEFT] [CENTER] ]
[RIGHT]
Des conseils?
5 réponses
Avec ce CSS, mettez vos divs comme ceci (flotte en premier):
<div id="container">
<div id="left"></div>
<div id="right"></div>
<div id="center"></div>
</div>
P. S. Vous pouvez également flotter à droite, puis à gauche, puis centre. L'important est que les flotteurs viennent avant la section centrale "principale".
P. P. S. vous voulez souvent last inside #container
cet extrait: <div style="clear:both;"></div>
qui s'étendra #container
verticalement pour contenir les deux flotteurs latéraux au lieu de prendre sa hauteur uniquement à partir de #center
et éventuellement permettre aux côtés de dépasser le fond.
Si vous ne voulez pas changer votre structure HTML, vous pouvez également le faire en ajoutant text-align: center;
à l'élément wrapper et un display: inline-block;
à l'élément centré.
#container {
width:100%;
text-align:center;
}
#left {
float:left;
width:100px;
}
#center {
display: inline-block;
margin:0 auto;
width:100px;
}
#right {
float:right;
width:100px;
}
Démo en direct: http://jsfiddle.net/CH9K8/
Aligner Trois Divs Horizontalement À L'Aide De Flexbox
Voici une méthode CSS3 pour aligner les Div horizontalement dans un autre div.
#container {
display: flex; /* establish flex container */
flex-direction: row; /* default value; can be omitted */
flex-wrap: nowrap; /* default value; can be omitted */
justify-content: space-between; /* switched from default (flex-start, see below) */
background-color: lightyellow;
}
#container > div {
width: 100px;
height: 100px;
border: 2px dashed red;
}
<div id="container">
<div></div>
<div></div>
<div></div>
</div>
JsFiddle
La propriété justify-content
prend cinq valeurs:
-
flex-start
(par défaut) flex-end
center
space-between
space-around
Dans tous les cas, les trois div sont sur la même ligne. Pour une description de chaque valeur voir: https://stackoverflow.com/a/33856609/3597276
les Avantages de flexbox:
- code minimal, très efficace
- centrage, à la fois verticalement et horizontalement, est simple et facile
- les colonnes de hauteur égale sont simples et faciles
- plusieurs options pour aligner les éléments flexibles
- c'est réactif
- contrairement aux flotteurs et aux tables, qui offrent une capacité de mise en page limitée car ils n'ont jamais été destinés à des mises en page de construction, flexbox est une technique moderne (CSS3) avec un large éventail d'options.
Pour en savoir plus sur flexbox visite:
- méthodes D'alignement des éléments flexibles
- utilisation de boîtes flexibles CSS ~ MDN
- un Guide complet de Flexbox ~ CSS-Tricks
- Qu'est-ce que la Flexbox?! ~ tutoriel vidéo YouTube
Navigateur appui: Flexbox est pris en charge par tous les principaux navigateurs, sauf IE . Certaines versions récentes du navigateur, telles que Safari 8 et IE10, nécessitent préfixes fournisseur . Pour un moyen rapide d'ajouter des préfixes, utilisez Autoprefixer . Plus de détails dans cette réponse.
La propriété Float n'est pas utilisée pour aligner le texte.
Cette propriété est utilisée pour ajouter un élément à droite, à gauche ou au centre.
div > div { border: 1px solid black;}
<html>
<div>
<div style="float:left">First</div>
<div style="float:left">Second</div>
<div style="float:left">Third</div>
<div style="float:right">First</div>
<div style="float:right">Second</div>
<div style="float:right">Third</div>
</div>
</html>
Pour float:left
sortie sera [First][second][Third]
Pour float:right
sortie sera [Third][Second][First]
Cela signifie que la propriété float => left ajoutera votre élément suivant à gauche du précédent, même cas avec right
Vous devez également considérer la largeur de l'élément parent, si la somme des largeurs des éléments enfants dépasse la largeur de l'élément parent alors l'élément suivant sera ajouté à la prochaine ligne
<html>
<div style="width:100%">
<div style="float:left;width:50%">First</div>
<div style="float:left;width:50%">Second</div>
<div style="float:left;width:50%">Third</div>
</div>
</html>
[Premier] [Deuxième]
[Troisième]
Vous devez donc considérer tous ces aspects pour obtenir le résultat parfait