【问题标题】:Sass check if value is passed to mixinSass 检查是否将值传递给 mixin
【发布时间】:2021-05-26 11:57:51
【问题描述】:

请帮我修改mixin并创建兼容的function

这是我的mixin,它可以接受可选参数!importanttruefalse,如果!importanttrue,那么输出heightheight: 16px !important; 例如:

@mixin svg-size($size, !important: true) {
    svg {
        height: $size foo();
        width: $size foo();
    }
}

Call mixin:
@include svg-size(16px, true);

Output:
svg {
    height: 16px !important;
    width: 16px !important;
}

我还需要为这种函数取一个合适的名称

【问题讨论】:

    标签: variables sass scope


    【解决方案1】:

    conditionally-important 作为函数名并使用一些基本的 at 规则进行流控制如何返回 !important(如果为真)?

    @function conditionally-important ($important) {
      @if $important {
        @return !important; 
      }
      @return null;
    }
    
    @mixin svg-size($size, $is-important: true) {
      svg {
          height: $size conditionally-important($is-important);
          width: $size conditionally-important($is-important);
      }
    }
    
    // Calling as important
    @include svg-size(16px, true);
    // Output
    svg {
        height: 16px !important;
        width: 16px !important;
    }
    
    // Calling as not important
    @include svg-size(16px, false);
    // Output
    svg {
        height: 16px;
        width: 16px;
    }
    

    【讨论】:

    • 如果我不指明真假会怎样?我可以将 svg-size mixin 中的 ($is-important: true) 默认值更改为 false 吗?这类函数还有更短的名称吗?
    • 如果不是布尔值,它将遵循语言的真实性规则:sass-lang.com/documentation/values/…。您可以将 @if 语句更改为仅匹配 true,并将 @else if 更改为仅匹配 false,然后将其他所有内容更改为 @error 或返回 null。
    • 您可以更改任何默认值,它的功能仍然大致相同。我在选择函数名称时为了清楚起见,但您也可以只选择important($is-important),因为上下文中的变量很好地解释了它。 @Urch
    猜你喜欢
    • 2014-05-05
    • 2021-10-01
    • 2022-01-24
    • 2018-12-30
    • 2021-06-11
    • 2023-03-20
    • 2016-12-15
    • 2022-01-04
    • 2017-10-31
    相关资源
    最近更新 更多