我刚刚开始使用Sass,所以请耐心等待。在Sass mixin中处理可选参数
我有这个mixin处理现代浏览器的px
(旧IE)和rem
的声明字体大小,它也做了很好的line-height
计算。
@mixin font-size($font-size, $line-height-val: "", $sledge-hammer: "" /* $sledge-hammer is for an optional `!important` keyword */) {
font-size: ($font-size)+px#{$sledge-hammer};
font-size: ($font-size/$base-font-size)+rem#{$sledge-hammer};
@if $line-height-val == "" {
line-height: ceil($font-size/$base-line-height) * ($base-line-height/$font-size);
} @else {
line-height: #{$line-height-val};
}
}
它的工作原理,但我觉得可选参数($line-height-val
和$sledge-hammer
)是没有这样做的最优化的方式。 $line-height-val
是需要的,因为有时我需要手动声明line-height
和$sledge-hammer
是需要的,因为我需要在我的一些帮助程序类中声明!important
关键字。时间
90%,我只是用这样的混入:
@include font-size(24);
其中编译过:
font-size: 24px;
font-size: 1.5rem;
line-height: 1.1;
当我需要重写line-height
我这样做:
@include font-size(24, 1.6);
其中编译过:
font-size: 24px;
font-size: 1.5rem;
line-height: 1.6;
但是,如果我需要声明!important
关键字,然后我必须这样做:
@include font-size($font-size-sml, "", !important);
其中编译过:
font-size: 15px!important;
font-size: 0.9375rem!important;
line-height: 1.6;
但感觉有趣的是,我必须使用空""
作为第二个参数,第三个参数的值总是!important
这样应该在mixin中吗?
我只是想知道是否有更简洁的方式来编写这个mixin?
但我可以只写'important'这是少详细,但真的价值总是'!重要的'所以应该在mixin,但我似乎无法得到它的工作。另外如果我像上面的例子那样调用mixin,我会得到一个错误,因为它期待着第二个参数:'$ line-height-val',因此像我说过的那样的空双引号感觉很有趣。 –
错误是因为我写了'$ sledgehammer'而不是'$ sledge-hammer'。否则编译好。 – cimmanon
谢谢你的作品,你能解释一下这个部分主要是做最后一个空双引号: '$ important:if($ i,“!important”,“”);' –