【问题标题】:SASS How to set a Variable to equal nothing?SASS 如何将变量设置为不相等?
【发布时间】:2012-09-13 07:48:33
【问题描述】:

我正在尝试创建一个等于无的变量。我已经尝试了以下..

$false:null;

-和-

$false:" ";

我想用的是这个......

@mixin myMixin($myVariable:"", $myOtherVariable){
    $false:null;
    @if $myVariable == $false {
       //do something
    }
    @if $myVariable != "" {
      //do something else
    }
}

@include myMixin("", $myOtherVariable);

我在此示例中使用了两个变量,但我计划使用两个以上。

基本上我想要做的是可以选择排除变量而不必使用空引号。 $false: ""; 的问题在于它仍然需要空引号。所以我想知道SASS中是否有一些东西可以指定“null / or nothing”。我认为它可能是空的。不过好像不是这样的。。

【问题讨论】:

标签: sass


【解决方案1】:

nullfalse 可以工作(null 是最新版本的 Sass 中的新功能)。两者都适用于您的示例。 null 的唯一优点是,如果您将其与属性一起使用,它就会消失。

@mixin myMixin($myVariable: false, $myOtherVariable: false){
  @if not $myVariable {
     //do something
  } @else {
    //do something else
  }
}

@include myMixin(false, $myOtherVariable);

【讨论】:

  • 感谢您的澄清...不用说,您已经回答了我关于 NULL 使用的问题,而且它似乎可以正常工作。如果我不需要它,我希望不用在 @include() 中传递变量就可以过关。但就像我在 maxbeaty 的帖子中提到的那样,这似乎不是一个选择。无论如何,当我遇到 nil 的问题时,Null 工作得更好。所以再次感谢您的帮助。
  • 又错了。 :) 这是一个选项。使用上面的代码,您已将 false 设置为 $myVariable 参数的默认值。只要您为所有参数设置了默认值,就不需要与包含一起传递任何内容。只需@include myMixin;。只有没有默认值的参数才必须与包含行一起传递。 (必需的参数也必须在参数列表中的可选参数之前)
  • 好吧,这是有道理的。我知道 optional after required 但我不知道你可以设置这样的默认参数。现在看看你的 mixin 就更有意义了。
【解决方案2】:

将变量设置为“假”

$false: false;

【讨论】:

  • False 甚至与 Nothing 完全不同。此外,现有答案已经涵盖了 False 场景。
【解决方案3】:

Sass 是用 ruby​​ 编写的,它使用 nil 而不是 null

@mixin myMixin($myVariable, $myOtherVariable){
  $false: nil;
  @if $myVariable == $false{
     color: inherit;
  } @else {
     color: $myVariable;
  }
}

p {
  @include myMixin(nil, $myOtherVariable);
}

.red {
  @include myMixin(red, $myOtherVariable);
}

Example on jsFiddle

【讨论】:

猜你喜欢
  • 2016-10-23
  • 2012-04-18
  • 1970-01-01
  • 2016-02-04
  • 2018-01-01
  • 2011-12-29
  • 1970-01-01
  • 1970-01-01
  • 2021-08-16
相关资源
最近更新 更多