31

我想创建一个执行以下操作的函数:

.sprite-size (@width,@height,@x,@y) {
  width:~'@{width}px';
  height:~'@{height}px';
  background: @sprites no-repeat  -~'@{x}px' -~'@{y}px';
}

我想传递一个正值,@x然后@y在输出中否定它们。对于给定的示例,上述 LESS 函数输出以下内容:

//LESS
.header-language-selection {
  .sprite-size(44,21,312,0);
}

//Outputs CSS
.header-language-selection {
  width: 44px;
  height: 21px;
  background: url('/Content/images/sprites.png') no-repeat - 312px - 0px;
}

如您所见,输出结果在-和之间包含一个空格px。有什么办法可以消除它并实现我想要的吗?

我希望该行的输出为:background: url('/Content/images/sprites.png') no-repeat -312px -0px;

4

2 回答 2

60

只需乘以1您想要的符号和单位。所以:

.sprite-size(@width, @height, @x, @y) {
  width: @width*1px;
  t: @height*1px;
  background: @sprites no-repeat  @x*-1px  @y*-1px;
}
于 2013-01-17T20:04:56.790 回答
10

你也可以试试这个:

.sprite-size (@width,@height,@x,@y) {
  width: ~"@{width}px";
  height: ~"@{height}px";
  background: @sprites no-repeat  @x*(-1px)  @y*(-1px);
}
于 2014-09-26T07:21:05.050 回答