i_d_1
@i_d_1
Программист PHP

Как пользоваться миксинами (**модификаторами** — не то написал в задумчивости) БЭМ?

Если назначить модификатор блоку то для модификации элемента получается каскад. Если назначить модификатор каждому элементу получается куча дополнительных классов что наверное можно назвать избыточностью. Как правильно?

HTML:
<div class="button button_red"  lang="html">
        <i class="button__i"/>
        <span class="button__txt">Lorem</span>
    </div>


CSS:
.button{
     ......
}

.button__i{
     ......
}

.button__txt{
     ......
}
/* как видно ниже модификатор блока порождает каскад */
.button_red  .button__i{
    color: red;
}

.button_red  .button__txt{
    color: red;
}


Пример упрощенный. В жизни может быть гораздо больше элементов
  • Вопрос задан
  • 577 просмотров
Решения вопроса 1
movasyl
@movasyl
semper tiro
SCSS mixin
/// Block Element
/// @access public
/// @param {String} $element - Element's name
@mixin element($element) {
    &__#{$element} {
        @content;
    }
}

/// Block Modifier
/// @access public
/// @param {String} $modifier - Modifier's name
@mixin modifier($modifier) {
    &--#{$modifier} {
        @content;
    }
}

использование
.block {
    /* CSS declarations for `.block` */

    @include element('element') {
        /* CSS declarations for `.block__element` */
    }

    @include modifier('modifier') {
        /* CSS declarations for `.block--modifier` */

        @include element('element') {
            /* CSS declarations for `.block--modifier__element` */
        }
    }
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
werty1001
@werty1001
undefined
Каскад от модификатора на элементы нормальная практика, БЭМ не призывает отказываться от каскада совсем, а просто советует его избегать при возможности, а самое главное думать головой.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы