Próbuję stworzyć system menu z obrazem i tekstem powyżej i poniżej. Dane są dynamiczne. Chcę, aby system menu pojawił się w taki sposób, aby każdy obraz był w równej odległości od siebie, tak aby ustawiał się w siatce obrazów zarówno w poziomie, jak i w pionie.
Problemem jest tekst. Jeśli tekst jest dłuższy niż obraz, div zostaje powiększony. Jednak wówczas tworzy niezręcznie wyglądającą lukę, ponieważ obrazy nie są już w równych odstępach od siebie.
Aby obejść ten problem, myślę, że najlepszym rozwiązaniem byłoby, aby każdy z divów przyjął rozmiar większego diva. Nie jestem jednak pewien, jak to zrobić.
Próbowałem z Flexbox za pomocą flex-wrap
właściwości. Chociaż ładnie się pakuje, nie udało mi się znaleźć sposobu, aby każdy z obrazów znalazł się w równej odległości od siebie.
Jak mogę to osiągnąć?
Mój kod jest następujący:
#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. Nie jestem również pewien, dlaczego moje sekcje div zwiększają swoją wysokość. Doceniony zostanie zatem każdy wgląd w to.
align-items
jest ustawienie stretch
domyślne. Możesz łatwo to zmienić:align-items: flex-start;