Ich habe 10 Divs (64px x 64px), die ich in maximal 5 Spalten (für große und große Ansichtsfenster) und mindestens 3 Spalten (für kleine Ansichtsfenster wie iPhone 7 usw.) anzeigen möchte.
Ich versuche, dies mit CSS-Grid zu tun, kann aber nicht den minimalen Spaltenteil ausführen (es geht um 2 Spalten, auch wenn 3 Spalten vorhanden sind).
body {
background-color: wheat;
}
.parent {
display: grid;
grid-gap: 10px;
grid-template-columns: repeat(auto-fill, minmax(100px, 140px));
max-width: 800px;
}
.child {
height: 64px;
width: 64px;
background-color: brown;
}
<body>
<div class="parent">
<div class="child"></div>
<div class="child"></div>
<div class="child"></div>
<div class="child"></div>
<div class="child"></div>
<div class="child"></div>
<div class="child"></div>
<div class="child"></div>
<div class="child"></div>
<div class="child"></div>
</div>
</body>
Die maximale Breite für den Gittercontainer beträgt 800 Pixel.
Hier ist der Link zu Codepen
Bearbeiten: Wenn möglich, möchte ich dies nur mit CSS-Grid durchführen, d. H. Ohne Media Queries oder Flexbox.
sie können die erforderliche Ausgabe abrufen, indem Sie @media
verwendete Abfrage grid-template-columns: repeat(5, 1fr);
für großes Gerät und grid-template-columns: repeat(3, 1fr)
verwenden. für kleines Gerät
body {
background-color: wheat;
}
.parent {
display: grid;
grid-gap: 10px;
grid-template-columns: repeat(5, 1fr);
}
.child {
height: 64px;
width: 64px;
background-color: brown;
}
@media(max-width:540px){
.parent {
grid-template-columns: repeat(3, 1fr);
}
}
<body>
<div class="parent">
<div class="child"></div>
<div class="child"></div>
<div class="child"></div>
<div class="child"></div>
<div class="child"></div>
<div class="child"></div>
<div class="child"></div>
<div class="child"></div>
<div class="child"></div>
<div class="child"></div>
</div>
</body>
Ich hoffe das hilft
https://codepen.io/pandiyancool/pen/oPmgeP
cSS
body {
background-color: wheat;
}
.parent {
display: flex;
flex-wrap: wrap;
}
.child {
height: 80px;
padding: 25px;
background-color: brown;
border: 1px solid #ccc;
flex: 1 1 160px;
flex-basis: 20%;
}
Ich denke, das ist es, was du suchst.
body {
background-color: wheat;
}
.parent {
display: grid;
grid-gap: 2vw;
grid-template-columns: repeat(auto-fill, minmax(100px, 120px));
max-width: 800px;
}
.child {
height: 64px;
width: 64px;
background-color: brown;
}
<body>
<div class="parent">
<div class="child"></div>
<div class="child"></div>
<div class="child"></div>
<div class="child"></div>
<div class="child"></div>
<div class="child"></div>
<div class="child"></div>
<div class="child"></div>
<div class="child"></div>
<div class="child"></div>
</div>
</body>
Ich habe - grid-template-columns: repeat(auto-fill, minmax(100px, 140px));
in grid-template-columns: repeat(auto-fill, minmax(100px, 120px));
geändert.
Da in der kleinen Bildschirmgröße der untergeordnete Bereich 140px
reserviert wird, ist der untergeordnete Bereich in zwei Spalten unterteilt. Jetzt habe ich ihn in 120px
und grid-gap: 2vw;
geändert, um dieses Problem zu beheben.
Ich hoffe das war hilfreich für dich.
Für die maximale Breite ist die Antwort von @weBBer Ok), aber Sie sollten die minimale Breite (N) px einstellen
Sie sind sich nicht sicher, ob Sie auf flüssige Säulen achten, aber Sie könnten Medienabfragen verwenden, um Folgendes zu tun:
.parent { grid-template-columns: repeat(3, 1fr); }
Für kleine Bildschirme
und
.parent { grid-template-columns: repeat(5, 1fr); }
Für größere Bildschirme