J'essaie de créer un système de menus avec une image et du texte au-dessus et en dessous. Les données sont dynamiques. Je veux que le système de menus apparaisse de sorte que chaque image soit à égale distance l'une de l'autre afin qu'elles s'alignent dans une grille d'images à la fois horizontalement et verticalement.
Le problème est le texte. Si le texte est plus long que l'image, la div est agrandie. Cependant, cela crée un espace gênant car les images ne sont plus espacées de manière égale.
Pour contourner ce problème, je pense que la meilleure approche serait d'avoir chacune des autres divisions pour adopter la taille de la plus grande division. Cependant, je ne sais pas comment procéder.
J'ai essayé avec flexbox en utilisant la flex-wrap
propriété. Bien que ça se passe bien, je n'ai pas été en mesure de trouver un moyen d'obtenir que chacune des images s'aligne à égale distance les unes des autres.
Comment dois-je procéder pour y parvenir?
Mon code est le suivant:
#outer {
display: flex;
}
#main {
display: flex;
justify-content: space-between;
flex-wrap: wrap;
border: solid black 25px;
border-radius: 25px;
width: 450px;
height: 500px;
padding: 20px;
}
.section {
background-color: #ddd;
padding: 15px;
}
.label, .icon {
text-align: center;
}
<div id="outer">
<div id="main">
<div class="section">
<div class="label">Label 1AAAAAAAAAAA</div>
<div class="icon"><img src="https://via.placeholder.com/75"></div>
<div class="label">Label 1B</div>
</div>
<div class="section">
<div class="label">Label 2A</div>
<div class="icon"><img src="https://via.placeholder.com/75"></div>
<div class="label">Label 2B</div>
</div>
<div class="section">
<div class="label">Label 3A</div>
<div class="icon"><img src="https://via.placeholder.com/75"></div>
<div class="label">Label 3B</div>
</div>
<div class="section">
<div class="label">Label 4A</div>
<div class="icon"><img src="https://via.placeholder.com/75"></div>
<div class="label">Label 4B</div>
</div>
<div class="section">
<div class="label">Label 5A</div>
<div class="icon"><img src="https://via.placeholder.com/75"></div>
<div class="label">Label 5B</div>
</div>
</div>
</div>
PS. Je ne sais pas non plus pourquoi mes divs de section augmentent leur hauteur. Donc, toute idée à ce sujet serait également appréciée.
align-items
définie stretch
par défaut. Vous pouvez facilement changer cela:align-items: flex-start;