Less 变量mixin名称是否不太可能?
我想做的是创建一个mixin,它接受参数并使用一个或多个参数作为要包含的其他mixin的名称 由于我不确定正确的术语,我将尝试通过示例进行解释:Less 变量mixin名称是否不太可能?,less,less-mixins,Less,Less Mixins,我想做的是创建一个mixin,它接受参数并使用一个或多个参数作为要包含的其他mixin的名称 由于我不确定正确的术语,我将尝试通过示例进行解释: @gradients{ light:#fafafa; //Should these also be prefixed with @? dark:#888888; } @gradientBackground(@name,@height){ background-image:url('../img/gradients/{@name}
@gradients{
light:#fafafa; //Should these also be prefixed with @?
dark:#888888;
}
@gradientBackground(@name,@height){
background-image:url('../img/gradients/{@name}-{@height}.png'); //this works
background-color:@gradients[@name];
}
.someBox{
@gradientBackground(light;150);
}
//Expected result:
.someBox{
background-image:url('../img/gradients/light-150.png'); //This works
background-color:#fafafa; //This doesn't work.
}
该图像可以正常工作,但我还没有弄清楚如何从
@渐变中引用适当的颜色。这可能吗?我认为您根本不需要@gradients变量。只需定义变量:
@light:#fafafa;
@dark:#888888;
mixin不应以@开头,它定义了一个变量。mixin基本上只是一个类
.gradientBackground(@name:@dark, @height:500){
background-image:url('../img/gradients/{@name}-{@height}.png');
background-color:@name;
}
作为一个例子,我将mixin的属性设置为@dark color,高度设置为500
然后,当您想在另一个定义中使用mixin时,它将是这样的:
.somebox {
.gradientBackground(@light, 150);
}
因此,当您使用mixin时,您可以保留默认值或传递新值(即:@light&150)
希望有帮助 你不能用@dark_gradient和@light_gradient来代替吗?我可以,但最后还是用了,但我在寻找一个更优雅的解决方案。我可以将它与php或任何其他语言中的数组进行比较。如果要存储很多颜色,您是希望有一个可以作为一个组轻松访问且代码清晰的单个数组,还是每个颜色都有一个不同的变量?:)这就是我最终决定做的。我问,因为lesshp文档()有点不清楚,当时没有更好的例子。所以这更像是一个“我能做到这一点”类型的问题:)我的主要目标是通过在自己的mixin组中加入颜色和主题相关变量,使代码更干净,这样就可以用普通名称访问它们,但我想这毕竟是不可能的。