最大为0到最大算法

时间:2012-11-28 12:45:01

标签: math compass-sass sass

首先,请允许我提醒您,我的数学知识相当有限(因此我来这里询问此事)。

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

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

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

但是有一些限制,因为我正在尝试在使用SASS的Compass中执行此操作。有关可用的操作,请参阅here,但为了向您提供有关它的要点,只有基本操作可用。

我能够遍历行,所以只需要对系列中每一行都有效的计算。这是我能够使用的那种循环:

$maxValue:20;
$rows:5;

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

1 个答案:

答案 0 :(得分: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 example)。希望这有帮助