Адаптивна решетка с отстъпи в CSS
Нека сега създадем решетка с отстъпи. Ето пример какво трябва да получим:
Първо, нека създадем стиловете за родителския контейнер на блоковете:
.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 (min-width: 1000px) {
.child {
width: calc(100% / 4 - 1.5% * 3 / 4);
}
.child:not(:nth-child(4n)) {
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: 400px) and (max-width: 700px) {
.child {
width: calc(100% / 2 - 1.5% * 1 / 2);
}
.child:not(:nth-child(2n)) {
margin-right: 1.5%;
}
}
Един блок в ред:
@media (max-width: 400px) {
.child {
width: 100%;
}
}
Нека съберем целия код заедно:
.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%;
}
}
Създайте решетка, която при намаляване на екрана
първо да има осем елемента в ред,
след това четири елемента в ред, след това два елемента
в ред. Нека отстъпът между елементите да бъде
0.75%.
Модифицирайте предходната задача така, че
отстъпът между елементите да бъде с фиксирана
стойност от 20px.