Ich versuche ein Menüsystem mit einem Bild und Text oben und unten zu erstellen. Die Daten sind dynamisch. Ich möchte, dass das Menüsystem so angezeigt wird, dass jedes Bild den gleichen Abstand voneinander hat, sodass es horizontal und vertikal in einem Raster von Bildern ausgerichtet ist.
Das Problem ist der Text. Wenn der Text länger als das Bild ist, wird das Div vergrößert. Dann entsteht jedoch eine unangenehme Lücke, da die Bilder nicht mehr gleich weit voneinander entfernt sind.
Um dies zu umgehen, denke ich, wäre der beste Ansatz, wenn jeder der anderen Divs die Größe des größeren Divs übernimmt. Ich bin mir jedoch nicht sicher, wie ich das machen soll.
Ich habe mit Flexbox versucht, die flex-wrap
Eigenschaft zu nutzen. Während es gut verpackt ist, konnte ich keinen Weg finden, jedes der Bilder in gleichem Abstand voneinander auszurichten.
Wie gehe ich vor, um dies zu erreichen?
Mein Code lautet wie folgt:
#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. Ich bin mir auch nicht sicher, warum meine Abschnittsdivs ihre Höhe erhöhen. Ein Einblick in diese Frage wäre also ebenfalls willkommen.
align-items
ist die stretch
standardmäßig festgelegte. Sie können das leicht ändern:align-items: flex-start;