Estou tentando criar um sistema de menus com uma imagem e texto acima e abaixo. Os dados são dinâmicos. Estou querendo que o sistema de menus apareça para que cada imagem fique a uma distância igual da outra, para que se alinhem em uma grade de imagens na horizontal e na vertical.
O problema é o texto. Se o texto for maior que a imagem, a div será ampliada. No entanto, cria uma lacuna de aparência estranha, pois as imagens não são mais igualmente espaçadas uma com a outra.
Para contornar isso, acho que a melhor abordagem seria fazer com que cada um dos outros divs adotasse o tamanho do div maior. No entanto, não tenho certeza de como fazer isso.
Eu tentei com flexbox usando a flex-wrap
propriedade Enquanto está sendo bem organizado, não consegui encontrar uma maneira de alinhar cada uma das imagens a uma distância igual entre si.
Como faço para conseguir isso?
Meu código é o seguinte:
#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. Também não sei por que meus divs de seção estão aumentando sua altura. Portanto, qualquer insight sobre isso também seria apreciado.
align-items
é definida stretch
por padrão. Você pode facilmente mudar isso:align-items: flex-start;