打破Sass mixin

Lan*_*opp 2 sass mixins

是否有可能在Sass mixin的早期爆发/返回?我想做这样的事情:

@mixin foo($bar: false) {

  @if $bar {
    // return early without applying any of the styles below
  }

  color: red;
}
Run Code Online (Sandbox Code Playgroud)

编辑:请记住,这个例子是我能想到的最简单的事情,它说明了我的问题.在现实世界中,我的代码要复杂得多,而且用例很清楚.

Kat*_*ieK 7

Sass并没有真正的"休息"概念,但是@if/@else会让你非常接近:

@mixin foo($bar: false) {

  @if $bar {
    color: green;
  }
  @else {
    color: red;
  }

}
Run Code Online (Sandbox Code Playgroud)

来自Lead Sass开发人员 https://github.com/nex3/sass/issues/378:

问题在于Sass中存在的控制结构越少,对于只熟悉语言以阅读使用这些控制结构的样式表的事情就越难.这就是为什么它从最初的结构集开始需要做任何事情:因为在许多情况下,倾向于缩小语言的较小表面区域而不是编写复杂代码的最佳语义是有意义的.