Адаптивна решетка без отступи в CSS
Нека направим решетка, която ще има различен брой блокове в ред в зависимост от ширината на екрана. Ето пример за това, което трябва да получим:
Нека първо напишем HTML кода:
<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>
Сега нека добавим стилове за родителя на блоковете:
.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 (min-width: 1000px) {
.child {
width: 25%;
}
}
Сега нека поставим три блока в ред:
@media (min-width: 700px) and (max-width: 1000px) {
.child {
width: 33.3333%;
}
}
Сега нека поставим два блока в ред:
@media (min-width: 400px) and (max-width: 700px) {
.child {
width: 50%;
}
}
Един блок в ред:
@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;
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%;
}
}
Променете моя код така, че ширината на блоковете
да се изчислява чрез функцията calc.
Направете решетка, която при намаляване на екрана първо да има четири елемента в ред, след това два елемента в ред, и накрая един елемент в ред.
Направете решетка, която при намаляване на екрана първо да има шест елемента в ред, след това три елемента в ред, и накрая един елемент в ред.