Расставляем Sass точки остановки правильно
Я люблю оставлять @media аннотации в точках остановки запроса. Пожалуй, для меня это самая важная особенность Sass. Я выбираю метод и пишу код:
.element { display: grid; grid-template-columns: 100px 1fr; @include breakpoint(baby-bear) { display: block; } }
Это достаточно просто. Но что, если у моего элемента есть несколько подэлементов и точка останова также повлияет и на них? Есть разные подходы и я никогда не был уверен в том, какой именно выбрать.
Одним из вариантов было дублирование точки остановы для каждого потомка:
.parent { @include breakpoint(desktop) { } .child { @include breakpoint(desktop) { } } .child-2 { @include breakpoint(desktop) { } }}
Скомпилированный CSS выглядит примерно так:
@media screen and (min-width: 700px) { .parent { } } @media screen and (min-width: 700px) { .parent .child { } } @media screen and (min-width: 700px) { .parent .child-2 { } }
Так же, я, например, мог бы дублировать дочерние элементы под первой вложенной точкой остановки:
.parent { @include breakpoint(desktop) { .child { } .child-2 { } } .child { } .child-2 { } }
Теперь мы сможем увидеть результат:
@media screen and (min-width: 700px) { .parent .child { } .parent .child-2 { } } .parent .child { } .parent .child-2 { }
Либо же можно сделать комбинацию из двух вариантов. Обычно практика дублирования считается антипаттерном, но я не уверен, что здесь есть идеальное решение. Я чуть больше ошибаюсь при дублировании медиазапроса, чем здесь. Но медиазапросы менее подвержены ошибкам, чем дублирующие селекторы.
Перевод статьи: Where Do You Nest Your Sass Breakpoints?