Sto cercando di creare un sistema di menu con un'immagine e un testo sopra e sotto. I dati sono dinamici. Voglio che il sistema di menu appaia in modo tale che ogni immagine abbia la stessa distanza l'una dall'altra in modo che si allineino in una griglia di immagini sia in orizzontale che in verticale.
Il problema è il testo. Se il testo è più lungo dell'immagine, il div viene ingrandito. Tuttavia, crea uno spazio imbarazzante poiché le immagini non sono più equidistanti tra loro.
Per ovviare a questo, penso che l'approccio migliore sarebbe avere ciascuno degli altri div per adottare la dimensione del div più grande. Tuttavia, non sono sicuro di come procedere.
Ho provato con flexbox utilizzando la flex-wrap
proprietà. Mentre si avvolge bene, non sono stato in grado di trovare un modo per allineare ciascuna immagine alla stessa distanza l'una dall'altra.
Come posso raggiungere questo obiettivo?
Il mio codice è il seguente:
#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. Inoltre, non sono sicuro del motivo per cui i miei div di sezione stanno aumentando la loro altezza. Quindi anche qualsiasi intuizione su questo sarebbe apprezzata.
align-items
è impostato per stretch
impostazione predefinita. Puoi facilmente cambiarlo:align-items: flex-start;