本文介绍了减少使用以基于参数值和传递的mixin生成动态CSS规则的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

是否可以在LESS中实现类似的目标?

It is possible to achieve something like this in LESS?

.some-button(@className) {
  @className { .actionIcon; }
  tr:hover {
    @className { .actionButton; }
  }
}

当我打电话时:

.some-button(.edit-action);

预期输出应为:

.edit-action { .actionIcon; }
tr:hover { .edit-action { .actionButton; } }

当前,我收到此"@className {.actionIcon;}中无法识别的输入"错误:

Currently I'm getting this "Unrecognized input in @className { .actionIcon; }" error:

.some-button(@className) {
  @className { .actionIcon; }
  tr:hover {

编辑

我想实现的另一件事是使用mixin作为mixin参数:

EDIT

Another thing I would like to achieve is to use a mixin as mixin parameter:

.actionButton(@buttonClassName; @buttonType) {
  @{buttonClassName} { 
    .actionIcon; 
  }
  tr:hover {
    @{buttonClassName} { 
        .actionHoverIcon; 
        @buttonType();
    }
  }
}

呼叫就像这样:

.actionButton(~'.row-edit', button-harmful);

其中对按钮有害是混入.

推荐答案

他们称其为选择器插值" ,正确的语法是:

They call this "Selector Interpolation", the correct syntax is:

.some-button(@className) {
    @{className} { 
        /* ... */
    }
}

// usage:
.some-button(~'.edit-action');

或者(例如,如果您只知道使用类,即.前缀选择器),也可以这样:

Or alternatively (if you know you will use only classes, i.e. . prefixed selectors) like this:

.some-button(@className) {
    .@{className} {
        /* ... */
    }
}

// usage:
.some-button(edit-action);

这篇关于减少使用以基于参数值和传递的mixin生成动态CSS规则的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-21 15:32