【发布时间】:2013-04-11 09:47:58
【问题描述】:
我正在尝试为边界半径编写一个 mixin,而不是仅在由变量设置的值 >= 0 时输出。我将变量中的基值设置为 3px,所以如果我输入 -1 或否例如,border-radius mixin 不会在最终样式表中创建任何属性。如果我想在每个角落都有相同的价值,我可以让它工作。但是,如果我想使用速记,即 3px 3px 0 0,我无法锻炼如何使其工作。我认为在这两种情况下 3px 被变量和 0 更改是一个问题。我现在的代码是
.border-radius(@r) when not (@r = no), (@r = 0) {
-webkit-border-radius: @r;
-moz-border-radius: @r;
border-radius: @r;
}
.border-radius(@r) when (@r = no), (@r = 0) {}
@baseBorderRadius: 3px;
.class1 { .border-radius(@baseBorderRadius); }
// This outputs fine: 3px 3px 3px 3px
.class2 { .border-radius(@baseBorderRadius @baseBorderRadius 0 0); }
// This outputs fine 3px 3px 0 0
@baseBorderRadius: no; // If I change the variable to try and disable/not run the mixin
.class1 { .border-radius(@baseBorderRadius); }
// This does what I want and doesn't run the mixin
.class2 { .border-radius(@baseBorderRadius @baseBorderRadius 0 0); }
// THIS IS THE PROBLEM! This outputs: no no 0 0
所以我需要一种方法来禁用/不运行 mixin,如果它包含从全局变量定义的某个值或单词。我正在为一个主题变量文件执行此操作,根据品牌,公司可能需要或不需要圆角,我不希望在最终样式表中不必要地包含大量 0 值。
我非常感谢任何帮助,即使只是为了发现我想做的事情在 LESS 中是不可能的。谢谢
【问题讨论】:
标签: variables less mixins css shorthand