Avec les CSS typiques, je pouvais flotter l'une des deux colonnes à gauche et une à droite, avec un espace entre gouttières. Comment ferais-je cela avec flexbox?
#container {
width: 500px;
border: solid 1px #000;
display: -webkit-flex;
display: -ms-flexbox;
display: flex;
}
#a {
width: 20%;
border: solid 1px #000;
}
#b {
width: 20%;
border: solid 1px #000;
height: 200px;
}
<div id="container">
<div id="a">
a
</div>
<div id="b">
b
</div>
</div>
Vous pouvez ajouter justify-content: space-between
à l'élément parent. Ce faisant, les éléments enfants flexbox seront alignés sur les côtés opposés avec un espace entre eux.
#container {
width: 500px;
border: solid 1px #000;
display: flex;
justify-content: space-between;
}
#container {
width: 500px;
border: solid 1px #000;
display: flex;
justify-content: space-between;
}
#a {
width: 20%;
border: solid 1px #000;
}
#b {
width: 20%;
border: solid 1px #000;
height: 200px;
}
<div id="container">
<div id="a">
a
</div>
<div id="b">
b
</div>
</div>
Vous pouvez également ajouter margin-left: auto
au deuxième élément afin de l'aligner à droite.
#b {
width: 20%;
border: solid 1px #000;
height: 200px;
margin-left: auto;
}
#container {
width: 500px;
border: solid 1px #000;
display: flex;
}
#a {
width: 20%;
border: solid 1px #000;
margin-right: auto;
}
#b {
width: 20%;
border: solid 1px #000;
height: 200px;
margin-left: auto;
}
<div id="container">
<div id="a">
a
</div>
<div id="b">
b
</div>
</div>
Je suis venu avec 4 méthodes pour atteindre les résultats. Voici démo
Méthode 1:
#a {
margin-right: auto;
}
Méthode 2:
#a {
flex-grow: 1;
}
Méthode 3:
#b {
margin-left: auto;
}
Méthode 4:
#container {
justify-content: space-between;
}
Il y a différentes manières mais le plus simple serait d'utiliser l'espace-entre voir l'exemple à la fin
#container {
border: solid 1px #000;
display: flex;
flex-direction: row;
justify-content: space-between;
padding: 10px;
height: 50px;
}
.item {
width: 20%;
border: solid 1px #000;
text-align: center;
}
Une autre option consiste à ajouter une autre balise avec le style flex: auto
entre vos balises que vous souhaitez remplir l'espace restant.
https://jsfiddle.net/tsey5qu4/
Le HTML:
<div class="parent">
<div class="left">Left</div>
<div class="fill-remaining-space"></div>
<div class="right">Right</div>
</div>
Le CSS:
.fill-remaining-space {
flex: auto;
}
Cela équivaut à flex: 1 1 auto, qui absorbe tout espace supplémentaire le long de l'axe principal.