Селектор потомков или куда класть стили?

Давайте представим, что у нас есть компонент card:

// Файл card.scss
.card {
 // стили
}

И компонент container:

// Файл container.scss
.container {
 // стили
}

Теперь нам нужно написать стили для card, который находится внутри container.


Тезис

Если мы пишем стили для компонента, то они должны находится в файле этого компонента.

В нашем случае это — card.


Пример

Воспользуемся селектором расширения SASS:

// Файл card.scss
.card {
 // стили
 %container & {
  // еще стили
 }
}
// Файл container.scss
.container {
 @extend %container;
 // стили
}

Здесь я для класса container задал одноименный extend.

А потом дописал стили в card.


Это скомпилируется примерно в такой css:

.card {
 // стили
}
.container {
 // стили
}
.container .card {
 // стили
}

@extend я использовал для того чтобы была возможность быстро переименовать класс, но можно и без него.


Альтернативный пример

// Файл card.scss
.card {
 // стили
 .container & {
  // еще стили
 }
}

Минус этого подхода в том, что если класс container изменится, то его придется править в нескольких местах.

А плюс — не требуется использовать extend или sass.


Антипример

Иногда можно увидеть как разработчик пишет так:

// Файл container.scss
.container {
 // стили
 .card {
  // еще стили
 }
}

Это приводит к тому, что стили для card находятся в разных местах. И это становится большой проблемой, когда таких мест становится несколько:

// Файл container.scss
.container {
 // стили
 .card {
  // еще стили
 }
}
// Файл main.scss
.main {
 // стили
 .card {
  // еще стили
 }
}
// Файл wrapper.scss
.wrapper {
 // стили
  .card {
  // еще стили
 }
}

Еще демо можно посмотреть в кодпене.

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества

Недвижимость и ремонт

Теги

Популярные авторы

Сообщества