【发布时间】:2015-04-05 05:47:11
【问题描述】:
我正在尝试做的是一个带有可选参数的 mixin,以包含或不包含围绕规则的选择器。这是预期的行为:
@include smth(true) => .class{ color:blue }
@include smth(false) => color: blue
我试过这样的:
@mixin smth($selector:true){
@if $selector {
.class{
}
color: blue;
@if $selector{
}
}
}
@if 指令中的括号显然是问题所在。所以我尝试将@if 的内容放在双引号".class{" 下并使用插值#{".class{"}(有和没有转义字符\},所以它不会干扰但没有任何作用。
简而言之,我不希望 sass 处理 @if 的内容,而只是“按原样”处理。
更新
从 cimmanon 的回答中,我设法创建了一个更通用的 mixin:
@mixin conditional-wrap($condition, $selector){
@if $condition{
#{$selector}{
@content
}
}
@else{
@content
}
}
所以我们现在可以这样做了:
@mixin smth($selector:true){
@include conditional-wrap($selector, '.class'){
color: blue;
}
}
【问题讨论】:
-
投票关闭是印刷错误(提示:左花括号不能多于右花括号)。
-
您的意思是在同一个@if 指令内吗?因为否则就没有。
-
那你的嵌套搞砸了,你需要找一个能显示匹配大括号的编辑器。
标签: sass