5

如何减少此代码(可能带有循环?),以获得具有方向和数量的“功能”?

  • @dir=想要的“方向”
  • @number= 我需要多少次阴影(这里是 10 次)
  • @color= 阴影的颜色

示例(工作,但不是很容易使用):

.perspective-box(@dir, @number, @color) when (@dir = se){
   -webkit-box-shadow:1px 1px 0 0 @color,
                      2px 2px 0 0 @color,
                      3px 3px 0 0 @color,
                      4px 4px 0 0 @color,
                      5px 5px 0 0 @color,
                      6px 6px 0 0 @color,
                      7px 7px 0 0 @color,
                      8px 8px 0 0 @color,
                      9px 9px 0 0 @color,
                      10px 10px 0 0 @color;
}

我有一个@dir参数可以改变阴影的方向。在这个例子中,我把@dir = se, where se= South East. 这对于西北、东北、西南和东南来说是一样的。

如何避免这种情况……?

.perspective-box(@dir, @number, @color) when (@dir = ne){
   -webkit-box-shadow:10x North East shadow…
}

.perspective-box(@dir, @number, @color) when (@dir = nw){
   -webkit-box-shadow:10x North West shadow…
}

.perspective-box(@dir, @number, @color) when (@dir = sw){
   -webkit-box-shadow:10x South West shadow…
}

.perspective-box(@dir, @number, @color) when (@dir = se){
   -webkit-box-shadow:10x South East shadow…
}
4

2 回答 2

4

没问题:

.text-shadow-3d(@x, @y, @index) when (@index > 0) {

    // Loop-de-loop.
    .text-shadow-3d(@x, @y, @index - 1);

    // The '+' after 'text-shadow' concatenates with comma.
    text-shadow+: @x*@index @y*@index 0 black;
}


.text-shadow-3d(1px, 1px, 5);

结果:

text-shadow: 1px 1px 0 #000000, 2px 2px 0 #000000, 3px 3px 0 #000000, 4px 4px 0 #000000, 5px 5px 0 #000000;

文件:

http://lesscss.org/features/#loops-feature

http://lesscss.org/features/#merge-feature

于 2015-02-14T10:05:59.510 回答
-1

我几乎肯定这对于 LESS 是不可能的,因为它缺乏这样做的语言结构(我使用 LESS 已经有一段时间了,所以我可能是错的)。另一方面,Sass 可能能够做到这一点,因为它确实有循环和列表之类的东西(尽管查看那里的选项,看起来处理可变数量的阴影可能非常难看)。

于 2012-09-24T12:45:00.503 回答