我想要做的是创建一个带有参数的mixin,并使用一个或多个参数作为其他mixin的名称。
由于我不确定正确的术语,我将尝试通过示例解释:
@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
引用适当的颜色。这有可能吗?
答案 0 :(得分:2)
我认为你根本不需要@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颜色,将高度设置为500.
然后当你想在另一个定义中使用你的mixin时,它会是这样的:
.somebox {
.gradientBackground(@light, 150);
}
所以,当你使用mixin时,你可以保留默认值或传递新值(即:@light& 150)
希望有所帮助!