Войти с помощью github
Форум /

Здравствуйте, извините, за еще один пост. Просто решил разобраться окончательно и перестать писать в коде //TODO Может и другим будет полезно

Прочем доки, не нашел такого момента как динамический стиль.

Приведу пример, есть навигационный блок на сайте, при открытии меню некоторые компоненты внутри этого блока должны изменить свой вид.

Вот пример

<nav id="navigation-main" class="navigation-bar l-navigation-bar">
    <div class="navigation-bar__container">
        <div class="navigation-bar__toggle">
        </div>
        <div class="navigation-bar__logo nav-logo">
        </div>
        <div class="navigation-bar__menu l-navigation-menu">
            <div class="nav-menu">
            </div>
        </div>
        <div class="navigation-bar__phone-number nav-phone">
        </div>
    </div>
</nav>

Вот нажимает пользователь на меню navigation-bar__toggle и в JS добавляется класс is-menu-opened к элементу с id navigation-main

Собственно вопрос теперь как правильно сделать ? У меня есть две идеи Стоит заметить что на выходе после компиляции получаются практически одинаковые результаты, то есть разница лишь в препроцессоре в данном случае (SASS)

  1. Переложить все обязанности на класс is-menu-opened, то есть он осведомленным в структуре HTML

    .is-menu-opened
      height: 100%
      background-color: #000
      .nav-menu-list
        visibility: visible
        opacity: 1
      .nav-menu-list__item
        opacity: 1
    
  2. Второй вариант, это чтобы сам модуль рисовал себя при определенном условии как надо. В данном каждый модуль должен знать что его могут обрамить в класс is-menu-opened, но с другой стороны нету зависимости от HTML структуры , пример

    .nav-logo
    padding-left: 5%
    text-align: left
    color: $white-color
    .is-menu-opened &
     visibility: visible
    

Подскажите пожалуйста может есть какие-то еще более рациональные подходы и как правильно и элегантно решать подобные задачи. И может есть в общем какие-то замечания по структуре, буду признателен за критику и советы.

Спасибо большое.