我正在使用LESSCSS。我正在尝试创建不透明度的方法:

.opacity (@opacity)
{
    opacity: @opacity;
    -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(opacity=(@opacity * 100))";
    filter: alpha(opacity = (@opacity * 100));
}

因此,如果我使用以下方式调用它:
h1 {
  .opacity(.5);
}

我希望它输出:
h1 {
  opacity: .5;
  -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(opacity=50)";
  filter: alpha(opacity = 50);
}

但是,LESS会引发错误:
Expected '}' on line 30 in file '/Content/styles/style.less.css':
 [29]:     -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(opacity=(@opacity * 100))";
 [30]:     filter: alpha(opacity = (@opacity * 100));
       ----^
 [31]: }

我在做什么错?

最佳答案

在无点的情况下,执行此操作。 (我不建议您使用脚本标签-它们很丑陋,特定于语言并且不受dotless支持)。

.opacity (@opacity) {
    @opacityPercentage: @opacity * 100;
    opacity: @opacity;
    -ms-filter: ~"progid:DXImageTransform.Microsoft.Alpha(opacity=(@{opacityPercentage}))";
    filter: ~"alpha(opacity = (@{opacityPercentage}))";
}

在无点1.2.3中(当它在几周内发布,或者在github头上发布时,您应该可以执行此操作...
.opacity (@opacity) {
    @opacityPercentage: @opacity * 100;
    opacity: @opacity;
    -ms-filter: progid:DXImageTransform.Microsoft.Alpha(opacity=(@opacityPercentage));
    filter: alpha(opacity = (@opacityPercentage));
}

再说一遍:来自Mathletics的评论,dotless并不是“最糟糕的编译器”。它匹配less.js到1.1.5,不久就会成为1.2.2,并且针对less.js的600个错误中有许多已修复为无点。您可能已经在8个月前使用了dotless,但是事情发生了变化,并且错误已修复... dotless还对注释和变量作用域提供了更好的支持。

07-27 20:34