String 作为函数参数的LESS mixin
现有混合器:String 作为函数参数的LESS mixin,string,less,interpolation,mixins,String,Less,Interpolation,Mixins,现有混合器: .mixin_1 { height: 1px; } .mixin_2 { height: 2px; } .mixin_3 { height: 3px; } .function(@get) { @get(); } 电话: 结果: .a{ height: 1px; } .b{ height: 2px; } .c{ height: 3px; } 问题:怎么做?使用当前的语言规范是可能的?您当前无法直接基于变量对mixin进行动态调用。您可以将
.mixin_1 {
height: 1px;
}
.mixin_2 {
height: 2px;
}
.mixin_3 {
height: 3px;
}
.function(@get) {
@get();
}
电话:
结果:
.a{
height: 1px;
}
.b{
height: 2px;
}
.c{
height: 3px;
}
问题:怎么做?使用当前的语言规范是可能的?您当前无法直接基于变量对mixin进行动态调用。您可以将
函数()
混入到“调用者”或“获取者”混入中,在其中注册可以由函数()
混入调用的混入,如下所示(利用模式匹配):
更少
.function(@get) {
.-(@get); //call for mixin
//register mixins you want to call with function
.-(mixin_1) { .mixin_1; }
.-(mixin_2) { .mixin_2; }
}
.mixin_1 {
height: 1px;
}
.mixin_2 {
height: 2px;
}
#block {
.function(mixin_1);
}
输出
.mixin_1 {
height: 1px;
}
.mixin_2 {
height: 2px;
}
#block {
height: 1px;
}
.mixin_1() {
height: 1px;
}
.mixin_2() {
height: 2px;
}
当然,如果希望混音对css不可见,请将其更改为:
更改少(添加括号)
新输出
#block {
height: 1px;
}
你需要它吗?
这种抽象级别有时很有用,但通常只要在mixin上进行模式匹配就足够了。你必须确定这一点。因此,通过这个简单的示例,最好简化为以下内容:
.setHeight(1) {
height: 1px;
}
.setHeight(2) {
height: 2px;
}
#block {
.setHeight(1);
}
.mixin_1() {
height: 1px;
}
.mixin_2() {
height: 2px;
}
#block {
.mixin_1();
}
更复杂的mixin示例可能不太容易简化,然后像您想要的那样的mixin可能会很有用。我认为您的代码也会这样做:
.setHeight(1) {
height: 1px;
}
.setHeight(2) {
height: 2px;
}
#block {
.setHeight(1);
}
.mixin_1() {
height: 1px;
}
.mixin_2() {
height: 2px;
}
#block {
.mixin_1();
}
输出将是:
#block {
height: 1px;
}
我问的是另一件事。然而,我找到了解决办法:
.function(@get) {
.-(@get); //call for mixin
//register mixins you want to call with function
.-(mixin) { .mixin; }
}
#block {
.mixin() {
height: 1px;
}
.function(mixin);
}
#block {
.mixin() {
height: 2px;
}
.function(mixin);
}
它输出的正是我想要的:
#block {
height: 1px;
}
#block {
height: 2px;
}
总而言之,谢谢你的帮助。@FlamesoFF:那根本不是操作员(这就是为什么你没有找到它)。这是一个简写的混音名称。由于类/混合名中允许使用连字符(如
.red-1
),因此这只是一种很短的名称。它在这样的情况下工作得很好,您可能需要经常重复它,并且它嵌套在另一个mixin中。我实际上是从另一个堆栈溢出贡献者那里学到了这个技巧。我想链接到不会有什么害处。对不起,但不完全是这样。我对我的问题进行了编辑,使其更加详细和易懂。我理解你的问题。“模式匹配”功能是@ScottS answer使用的功能(例如,我的评论是在“what operator it is?”)的上下文中)