Responsiv CSS-gitter med marginer
Lad os nu lave et gitter med marginer. Her er et eksempel på, hvad vi skal opnå:
Lad os starte med at lave stilarter til forælderen til blokkene:
.parent {
display: flex;
flex-wrap: wrap;
width: 95%;
margin: 50px auto;
}
Nu sætter vi stilarter til selve blokkene, uden at give dem bredde, men ved at give en bundmargin i procenter:
.child {
box-sizing: border-box;
height: 100px;
padding: 20px;
margin-bottom: 1.5%;
border: 1px solid green;
}
Nu skriver vi koden, der placerer fire blokke på række, med de tilsvarende marginer:
@media (min-width: 1000px) {
.child {
width: calc(100% / 4 - 1.5% * 3 / 4);
}
.child:not(:nth-child(4n)) {
margin-right: 1.5%;
}
}
Og nu placerer vi tre blokke på række:
@media (min-width: 700px) and (max-width: 1000px) {
.child {
width: calc(100% / 3 - 1.5% * 2 / 3);
}
.child:not(:nth-child(3n)) {
margin-right: 1.5%;
}
}
Og nu placerer vi to blokke på række:
@media (min-width: 400px) and (max-width: 700px) {
.child {
width: calc(100% / 2 - 1.5% * 1 / 2);
}
.child:not(:nth-child(2n)) {
margin-right: 1.5%;
}
}
En blok på række:
@media (max-width: 400px) {
.child {
width: 100%;
}
}
Lad os samle al koden:
.parent {
display: flex;
flex-wrap: wrap;
width: 95%;
margin: 50px auto;
}
.child {
box-sizing: border-box;
height: 100px;
padding: 20px;
margin-bottom: 1.5%;
border: 1px solid green;
}
@media (max-width: 400px) {
.child {
width: 100%;
}
}
@media (min-width: 400px) and (max-width: 700px) {
.child {
width: calc(100% / 2 - 1.5% * 1 / 2);
}
.child:not(:nth-child(2n)) {
margin-right: 1.5%;
}
}
@media (min-width: 700px) and (max-width: 1000px) {
.child {
width: calc(100% / 3 - 1.5% * 2 / 3);
}
.child:not(:nth-child(3n)) {
margin-right: 1.5%;
}
}
@media (min-width: 1000px) {
.child {
width: calc(100% / 4 - 1.5% * 3 / 4);
}
.child:not(:nth-child(4n)) {
margin-right: 1.5%;
}
}
Lav et gitter, der når skærmen bliver mindre
først har otte elementer på række,
derefter fire elementer på række, og derefter to elementer
på række. Lad afstanden mellem elementerne være
0.75%.
Modificer den forrige opgave, så
afstanden mellem elementerne er en fast
værdi på 20px.