SCSS mixin 中 if/else 条件的语法

Posted

技术标签:

【中文标题】SCSS mixin 中 if/else 条件的语法【英文标题】:Syntax for if/else condition in SCSS mixin 【发布时间】:2011-07-24 07:26:30 【问题描述】:

您好,我正在尝试学习 SASS/SCSS,并尝试为 clearfix 重构我自己的 mixin

我希望 mixin 是基于我是否通过 mixin 的宽度。

到目前为止的想法(仅伪代码,因为我将包括其他 mixins)

@mixin clearfix($width) 

   @if !$width 

    // if width is not passed, or empty do this

    @else 

        display: inline-block;
        width: $width;
   

我想我可以这样称呼它,但它不起作用。

@include clearfix();

@include clearfix(100%)

@include clearfix(960px)

如果能提供最佳或正确方法的帮助,我将不胜感激!

【问题讨论】:

【参考方案1】:

你可以试试这个:

$width:auto;
@mixin clearfix($width) 

   @if $width == 'auto' 

    // if width is not passed, or empty do this

    @else 
        display: inline-block;
        width: $width;
   

我不确定您的预期结果,但设置默认值应该返回 false。

【讨论】:

确实如此,谢谢我使用" ",但我更喜欢自动值:) - 虽然我将它放在mixin语法中作为默认值@但不需要设置变量987654323@谢谢:) 给$width:auto有什么目的吗?作为默认值?【参考方案2】:

您可以在首次创建 mixin 时内联分配默认参数值:

@mixin clearfix($width: 'auto') 

  @if $width == 'auto' 

    // if width is not passed, or empty do this

   @else 

    display: inline-block;
    width: $width;

  

【讨论】:

【参考方案3】:

您可以将参数默认为nullfalse。 这样,测试一个值是否作为参数传递的时间会更短。

@mixin clearfix($width: null) 

  @if not ($width) 

    // if width is not passed, or empty do this

   @else 

    display: inline-block;
    width: $width;

  

【讨论】:

以上是关于SCSS mixin 中 if/else 条件的语法的主要内容,如果未能解决你的问题,请参考以下文章

你能在 SASS/SCSS CSS 中使用多个条件吗

scss SCSS mixins我在我的日常SCSS项目中使用。包含各种有用的mixin用于各种事物,例如,在'rem'中生成font-size

scss SCSS mixins我在我的日常SCSS项目中使用。包含各种有用的mixin用于各种事物,例如,在'rem'中生成font-size

附加到 SCSS @mixin 的奇怪字符

scss よく使ってる便利そうなmixin集(Scss mixin collection)

scss Mixin在SASS中添加三角形