Идеальный CSS код
Немного пофилософствуем, какой HTML и CSS код можно было бы назвать идеальным при вёрстке по сетке. Или хотя бы приятным.
- В HTML нет огромных наборов одинаковых классов у однотипных элементов
- В CSS нет избыточного кода, только нужный
Пример:
<div class="userList">
<div class="userCard">User 1 inner tags...<div>
<div class="userCard">User 2 inner tags...<div>
<div class="userCard">User 3 inner tags...<div>
<div class="userCard">User 4 inner tags...<div>
</div>
.userList{
display: flex;
flex-wrap: wrap;
margin: 0 -15px;
}
.userCard{
box-sizing: border-box;
margin: 15px;
width: calc(100% / 12 * 3 - 30px);
}
@media screen and (max-width: 720px){
.userCard{
width: calc(100% / 12 * 6 - 30px);
}
}
/* Если вас дико бесит приём с отрицательным margin,
вам поможет сочетание клавиш alt + f4 :) /*
Такой код полностью соответствует базовой философии разделения кода на структуру и оформление. У нас минимум классов в HTML, все правила оформления в CSS.
Почему же так не делают вёрстку по сетке? Зачем фреймворки?
Делают и так! Просто редко, потому что такой код предполагает много копипаста и большое количество одинаковых кусков в CSS.
Допустим, нам надо перестроить на 992px вёрстку. В bootstrap мы добавим всем однотипным элементам один класс. А в "чистом коде", пример которого был приведён выше, придётся копипастить media-запрос и менять width calc.
Добавить класс явно проще и быстрее, чем копировать media.
Но что, если бы мы могли создать media-запрос одной строкой?
На помощь приходят препроцессоры.