1

是否有任何选项可以在 JS 代码中插入一些 LESS mixin?

我有这个边界半径混合:

.border_radius(@radius: 5px) {
  border-radius: @radius;
  -moz-border-radius: @radius;
  -webkit-border-radius: @radius;
}

那么有没有可能将此mixin添加到jQuery代码中?

var less = require('less');

$('.circle').css({
    width: width, height: width,
    less.border_radius(10px);
});
4

2 回答 2

4

您可以定义所需的 LESS mixin 的 JavaScript 等效项:

HTML

<div class="circle"></div>

CSS

.circle { border: 1px solid #FF0000; }

jQuery

function border_radius(radius) {
  radius = radius || '5px';
  return {
    'border-radius': radius,
    '-moz-border-radius': radius,
    '-webkit-border-radius': radius
  }
}

var styles = border_radius(),
    width = '20px';
styles.width = width;
styles.height = width;

$('.circle').css(styles);

JSFiddle

于 2013-05-02T11:54:52.860 回答
1

这不完全是您想要的,但也许这个技巧会有所帮助。我没有看到其他动态使用less函数的方法。

var parser = new less.Parser({});
var lessCode = '';
function roundedCorners(_class, radius) {
    lessCode = '/* import dependent syles */'
        + '@import "PATH-TO-YOUR-MAIN-LESS-FILE";'
        + '.' + _class + ' {'
            + '.rounded-corners(' + radius + 'px);'
        + '}';
    parser.parse(lessCode, function (error, root) { 
        $('head').append($( '<style type="text/css">' + root.toCSS() + '</style>' )); 
    });
}
//try...
roundedCorners('circle', 10);
于 2013-05-02T11:57:06.513 回答