Pour placer des balises les unes à côté des autres, on ne va pas appliquer la commande display: flex; sur les balises concernées…
Mais sur la balise parent !
Et c’est une première bonne raison pour bien indenter son code.
L’indentation vous permet d’un coup d’œil de visualiser votre hiérarchie de balises pour savoir laquelle cibler. C’est à dire sur quelle balise vous allez appliquer le diplay: flex.
Le problème, c’est que l’algorithme Flex décide lui même de la dimension des balises HTML enfant en fonction de leur quantité de contenu.
Autrement dit, Flex prend des initiatives. Et en général, ça ne correspond pas à ce que voulez.
La solution ? La propriété width
Utilisez la propriété width sur les balises enfants pour imposer une largeur.
Notez qu’il existe une autre propriété plus ou moins équivalente : flex-basis , mais on ne va pas compliquer les choses.
Le HTML
<section class="parent">
<div class="enfant">Tattoine Eodem tempore Serenianus ex duce, cuius ignavia populatam in Phoenice Celsen ante rettulimus, pulsatae maiestatis imperii reus iure postulatus ac lege, incertum qua potuit suffragatione absolvi</div>
<div class="enfant">Fiorina 161</div>
</section>
Le CSS
.parent {
display: flex;
}
.enfant {
width: 50%;
}
Et si on veut une largeur différente sur chaque enfant ?
On peut cibler chaque balise enfant spécifiquement, en utilisant une combinaison de classes par exemple (tu peux aussi utiliser des pseudo-classes nth-child ,va voir plus loin dans le cours).
Le HTML
<section class="parent">
<div class="enfant left">Tattoine Eodem tempore Serenianus ex duce, cuius ignavia populatam in Phoenice Celsen ante rettulimus, pulsatae maiestatis imperii reus iure postulatus ac lege, incertum qua potuit suffragatione absolvi</div>
<div class="enfant right">Fiorina 161</div>
</section>
Le CSS
.parent {
display: flex;
}
.enfant.left {
width: 70%;
}
.enfant.right {
width: 30%;
}
Note sur les combinaisons de classe
Vous pouvez très bien assigner deux classes différentes à une balise HTML : il vous suffit de séparer les deux noms de classe par un espace. Attention : ne mettez pas deux attributs class=""
.enfant.left {
width: 30%;
}
Côté CSS, on colle les deux sélecteurs de classe l’un à l’autre sans espace.