SCSS / SASS - 使用带有SASS的BEM并使用

时间:2017-04-21 12:35:57

标签: css sass

我正在使用BEM来命名我的班级名称,例如:.accordion,.accordion__title,.accordion__item__content。

为此,我创建了以下mixin:

@mixin child_el($element) {

        &__#{$element} {
        @content;
      }
    }

它工作得很好,但是当我需要添加属性时我遇到了问题:

.accordion {
  display: block;
  @include child_el(item) {
    &[state=true] {
    @include child_el(content) {
      display: block;
    }
  }
}
}

我想要实现的目标:

.accordion[state=true] .accordion__item {
 display: block;
}

父母被视为& [state = true]而不是.accordion

1 个答案:

答案 0 :(得分:1)

你可以在没有mixin的情况下重写它:

.accordion {
  display: block;

  &[state=true] &__item {
    display: block;
  }
}

输出CSS将是:

.accordion {
  display: block;
}

.accordion[state=true] .accordion__item {
  display: block;
}