[英]LESS if statement for build targets
我正在寻找LESS中的功能,以便能够更改一个变量并使它更改许多不同的变量,以便我可以更改编译目标并使其轻松更改大量变量。
这是我要寻找的示例。 唯一的问题是,因为我在.compile_for_if
重新定义了@img
, .compile_for_if
它在另一个作用域中。
@compile_for: "endpoint1";
@img_endpoint1: "./myImg.png";
@img_endpoint2: "https://somewhere.com/myImg.png";
@img: "./default.png";
.compile_for_if
{
& when (@compile_for = "endpoint1")
{
@img: @img_endpoint1;
}
& when (@compile_for = "endpoint2")
{
@img: @img_endpoint2;
}
}
... somewhere else ...
.img
{
background-image:url("@{img}");
}
您可以通过将所有规则包含在无名命名空间( &{...}
)中,然后在其范围内调用.compile_for_if
mixin来实现此目的。 这会将.compile_for_if
设置的所有变量都暴露给名称空间,因此所有规则都将能够访问它。 ( 注意:您还必须更改.compile_for_if
定义,如下所示。)
@compile_for: "endpoint1";
@img_endpoint1: "./myImg.png";
@img_endpoint2: "https://somewhere.com/myImg.png";
@img: "./default.png";
/* Added another set of conditional variables to illustrate */
@padding1: 10px;
@padding2: 20px;
@padding: 5px;
.compile_for_if when (@compile_for = "endpoint1"){
@img: @img_endpoint1;
@padding: @padding1;
}
.compile_for_if when (@compile_for = "endpoint2"){
@img: @img_endpoint2;
@padding: @padding2;
}
&{
.compile_for_if();
.img{
background-image:url("@{img}");
}
div{
padding: @padding;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.