nki*_*int 55 css if-statement less
我正在寻找某种if语句来控制background-color
不同的div
元素.
我已经尝试了下面的内容,但它没有编译
@debug: true;
header {
background-color: (yellow) when (@debug = true);
#title {
background-color: (orange) when (@debug = true);
}
}
article {
background-color: (red) when (@debug = true);
}
Run Code Online (Sandbox Code Playgroud)
Onu*_*rım 119
有一种方法可以将保护用于个人(或多个)属性.
@debug: true;
header {
/* guard for attribute */
& when (@debug = true) {
background-color: yellow;
}
/* guard for nested class */
#title when (@debug = true) {
background-color: orange;
}
}
/* guard for class */
article when (@debug = true) {
background-color: red;
}
/* and when debug is off: */
article when not (@debug = true) {
background-color: green;
}
Run Code Online (Sandbox Code Playgroud)
......并且少于1.7; 编译为:
header {
background-color: yellow;
}
header #title {
background-color: orange;
}
article {
background-color: red;
}
Run Code Online (Sandbox Code Playgroud)
fre*_*osh 50
LESS具有mixins的保护表达式,而不是单个属性.
所以你要创建一个这样的mixin:
.debug(@debug) when (@debug = true) {
header {
background-color: yellow;
#title {
background-color: orange;
}
}
article {
background-color: red;
}
}
Run Code Online (Sandbox Code Playgroud)
通过拨打.debug(true);
或.debug(false)
(或根本不打电话)打开或关闭它.
Pas*_*zyk 21
我偶然发现了同样的问题,我找到了解决方案.
首先确保至少升级到LESS 1.6.你可以npm
用于那种情况.
现在您可以使用以下mixin:
.if (@condition, @property, @value) when (@condition = true){
@{property}: @value;
}
Run Code Online (Sandbox Code Playgroud)
从LESS 1.6开始,您也可以将PropertyNames传递给Mixins.例如,您可以使用:
.myHeadline {
.if(@include-lineHeight, line-height, '35px');
}
Run Code Online (Sandbox Code Playgroud)
如果@include-lineheight解析为true,则 LESS将打印出来,line-height: 35px
如果@include-lineheight不为真,它将跳过mixin.
小智 8
我为一些语法糖写了一个mixin;)
也许有人喜欢这种写作方式if-then-else比使用guards更好
取决于少1.7.0
https://github.com/pixelass/more-or-less/blob/master/less/fn/_if.less
.if(isnumber(2), {
.-then(){
log {
isnumber: true;
}
}
.-else(){
log {
isnumber: false;
}
}
});
.if(lightness(#fff) gt (20% * 2), {
.-then(){
log {
is-light: true;
}
}
});
Run Code Online (Sandbox Code Playgroud)
使用上面的例子
.if(@debug, {
.-then(){
header {
background-color: yellow;
#title {
background-color: orange;
}
}
article {
background-color: red;
}
}
});
Run Code Online (Sandbox Code Playgroud)