0

首先,让我警告您,我的数学知识相当有限(因此我来这里询问这个问题)。

这是一个愚蠢的例子,但我本质上想要的是拥有可变数量的行,并且能够设置一个最大值,然后对于每个渐进行减少该值直到一半,此时开始再次增加该值回到最后一行的最大值。

为了说明这一点......鉴于:maxValue = 20rows = 5,我需要能够获得以下行值的值(是的,甚至是 0):

row 1: 20
row 2: 10
row 3: 0
row 4: 10
row 5: 20

但是有一些限制,因为我试图在使用 SASS 的 Compass 中执行此操作。有关可用操作的信息,请参见此处,但为了让您了解它的要点,只有基本操作可用。

我能够遍历行,因此只需要适用于系列中每一行的计算。这是我可以使用的循环:

$maxValue:20;
$rows:5;

@for $i from 1 through $rows {
    // calculation here.
}
4

1 回答 1

2

我以前没有真正使用过 SASS,但是使用基本的 if 和 floor 函数尝试这样的事情,不确定是否可以工作

// set various variables
$maxValue:20;
$rows:5;
// get row number before middle row, this instance it will be 2
$middleRow = floor( $maxValue / $rows )
// get increment amount, this instance should be 10
$decreaseValue = ( max / floor( rows / 2) )

@for $i from 0 through $rows - 1 {

   @if $i <= $middleRow {

      ( $maxValue- ( $decreaseValue * $i ) )

    }

   @else{

    // times by -1 to make positive value
       ( $maxValue - ( $decreaseValue * -$i ) ) * -1

    }
}

我已经在 js 中测试了上述内容(使用相对语法)并产生了所需的结果(jsBin 示例)。希望这可以帮助

于 2012-11-28T14:24:10.627 回答