Вот прямое предложение по решению вашего макета с использованием CSS-сетки .
Я внес существенное изменение, начиная с самых маленьких экранов и выше, так что его проще использовать только min-width
в ваших медиазапросах.
Если вам не нужно , нужно иметь различные настройки столбцов на основе вспомогательных классов, вы даже можете просто удалить все медиазапросы и разрешить правила для 8 столбцов. применимо для всех случаев.
Редактировать:
Вот упрощенная (о ирония) попытка:
.grid-wrap {
display: grid;
grid-gap: 20px;
.grid-item,
.grid-orphan {
background-color: #0000cc;
height: 50px;
}
// Breakpoints are initially the same in all columns variations
@media screen and (min-width: 601px) {
grid-template-columns: repeat(2, 1fr);
}
@media screen and (min-width: 992px) {
grid-template-columns: repeat(3, 1fr);
}
@media screen and (min-width: 1277px) {
grid-template-columns: repeat(4, 1fr);
}
@media screen and (min-width: 1527px) {
grid-template-columns: repeat(5, 1fr);
}
@media screen and (min-width: 1827px) {
grid-template-columns: repeat(6, 1fr);
}
@media screen and (min-width: 2021px) {
grid-template-columns: repeat(7, 1fr);
}
@media screen and (min-width: 2201px) {
grid-template-columns: repeat(8, 1fr);
}
&.four {
// Different breakpoint values in 4 column variations
@media screen and (min-width: 601px) {
grid-template-columns: repeat(2, 1fr);
}
@media screen and (min-width: 1200px) {
grid-template-columns: repeat(3, 1fr);
}
@media screen and (min-width: 1600px) {
grid-template-columns: repeat(4, 1fr);
}
}
&.five {
// No overrides
}
&.six {
// No overrides
}
&.seven {
// No overrides
}
&.eight {
// No overrides
}
}