• Оформление навигации по методологии БЭМ?

    Realetive
    @Realetive
    MODX Ambassador России, самозванный БЭМ-евангелист
    Выглядит так, словно это два независимых элемента того же блока. Значит ли это, что "menu__icon" должен быть способен существовать вне "menu__item"?


    — Нет. В смысле, что он «не должен». Структуру вложенности задаёт блок. Блок menu «утвердил», что menu__icon лежит внутри menu__item. Если это поменяется, это уже может быть выражено через модификацию блока menu:

    <nav class="menu menu_outside-icon">
      <i class="menu__icon"></i>
      <a class="menu__item" href="#!">
        Main
      </a>
    </nav>


    .menu_outside-icon .menu__icon {
      margin-right: 0;
    }


    или модификацию элемента:

    <nav class="menu">
      <i class="menu__icon menu__icon_outside"></i>
      <a class="menu__item" href="#!">
        Main
      </a>
    </nav>


    .menu__icon_outside {
      margin-right: 0;
    }


    По поводу альтернативной структуры — на самом деле вам нужны миксы. Т. е. вы хотите на одном теге выразить и то, что это иконка (блок icon), и то, что у неё есть какая-то внешняя геометрия, обусловленная вложенностью в другой блок ( т. е. что она одновременно ещё и menu__icon):

    <nav class="menu">
      <a class="link link_no-decoration menu__item" href="#!">
        <i class="icon icon_size_m menu__icon"></i>
        Main
      </a>
    </nav>


    .menu__item {
      padding: 1rem 2rem;
    }
    
    .menu__icon {
      margin-right: 0.5rem;
    }
    
    .link {
      color: blue;
    }
    
    .link_no-decoration,
    .link_no-decoration:hover,
    .link_no-decoration:focus {
      color: inherit;
      text-decoration: none;
      outline: none;
    }
    
    .icon {
      color: inherit;
      line-height: 1;
    }
    
    .icon_size_m {
      width: 1.5rem;
      height 1.5rem;
    }
    Ответ написан
    Комментировать