scss 通过mixin生成BEM类名

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了scss 通过mixin生成BEM类名相关的知识,希望对你有一定的参考价值。

.foo {
  background-color: red;
}
.foo__outer {
  background-color: blue;
}
.foo--inner {
  background-color: green;
}
.foo:hover {
  background-color: yellow;
}
// ----
// Sass (v3.4.14)
// Compass (v1.0.3)
// ----

@mixin sub_class(
  $type: element,
  $class_name: null
) {
  @if $type == element {
    &__#{$class_name} {
      @content
    }  
  }
  @if $type == modifier {
    &--#{$class_name} {
      @content
    }  
  }
}
@mixin grid_item(
  $height: 56%
) {
  background-color: red;

  @include sub_class(element, outer) {
    background-color: blue;
  }

  @include sub_class(modifier, inner) {
    background-color: green;
  }

  &:hover {
    background-color: yellow;
  }
}

.foo {
  @include grid_item();
}

以上是关于scss 通过mixin生成BEM类名的主要内容,如果未能解决你的问题,请参考以下文章

scss BEM-example.scss

Less基础

scss BEM-SASS

scss 完美的BEM示例。

带有父选择器的 BEM 嵌套 SCSS 会破坏 Sublime Text 语法突出显示?

elementui样式库分析——alert