У вас включен AdBlock или иной блокировщик рекламы.

Пожалуйста, отключите его, доход от рекламы помогает развитию сайта и появлению новых статей.

Спасибо за понимание.

В другой раз
DevGang блог о програмировании
Авторизоваться

Расставляем 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?