Responsiv CSS-rutnät utan marginaler
Låt oss skapa ett rutnät som kommer att ha olika antal block per rad beroende på skärmbredden. Här är ett exempel på vad vi borde få:
Låt oss först skriva HTML-koden:
<div class="parent">
<div class="child">1</div>
<div class="child">2</div>
<div class="child">3</div>
<div class="child">4</div>
<div class="child">5</div>
<div class="child">6</div>
<div class="child">7</div>
<div class="child">8</div>
<div class="child">9</div>
<div class="child">10</div>
<div class="child">11</div>
<div class="child">12</div>
</div>
Låt oss nu lägga till stilar för föräldern till blocken:
.parent {
display: flex;
flex-wrap: wrap;
width: 95%;
margin: 50px auto;
}
Låt oss nu ange stilar för själva blocken, utan att ange deras bredd:
.child {
box-sizing: border-box;
height: 100px;
padding: 20px;
border: 1px solid green;
}
Uppenbarligen bör blockens bredd vara i procent, så att blocken jämnt ändrar sin bredd när skärmen ändras. Samtidigt bör vi vid vissa skärmstorlekar ändra blockens bredd så att ett visst antal av dessa block får plats i en rad.
Låt oss skriva kod som placerar fyra block i rad:
@media (min-width: 1000px) {
.child {
width: 25%;
}
}
Och nu tre block i rad:
@media (min-width: 700px) and (max-width: 1000px) {
.child {
width: 33.3333%;
}
}
Och nu två block i rad:
@media (min-width: 400px) and (max-width: 700px) {
.child {
width: 50%;
}
}
Ett block i rad:
@media (max-width: 400px) {
.child {
width: 100%;
}
}
Låt oss samla all kod tillsammans:
.parent {
display: flex;
flex-wrap: wrap;
width: 95%;
margin: 50px auto;
}
.child {
box-sizing: border-box;
height: 100px;
padding: 20px;
border: 1px solid green;
}
@media (max-width: 400px) {
.child {
width: 100%;
}
}
@media (min-width: 400px) and (max-width: 700px) {
.child {
width: 50%;
}
}
@media (min-width: 700px) and (max-width: 1000px) {
.child {
width: 33.3333%;
}
}
@media (min-width: 1000px) {
.child {
width: 25%;
}
}
Ändra min kod så att blockens bredd
beräknas via funktionen calc.
Skapa ett rutnät som när skärmen minskar först har fyra element i rad, sedan två element i rad, och sedan ett element i rad.
Skapa ett rutnät som när skärmen minskar först har sex element i rad, sedan tre element i rad, och sedan ett element i rad.