2012-03-03 1 views
1

После обнаружения того, что у Сасса нет экспоненциальных способностей, я решил создать свою собственную функцию pow(). Это моя неудачная попытка:Экспоненциальность в Sass

@function pow($x,$p) { 
    $u: unit($x); 
    $x: $x/1#{$u}; 
    $p: round($p); 
    @if $p == 0 { 
    @return 0; 
    } @else if $p == 1 { 
    @return $x; 
    } @else { 
    @for $i from 1 through abs($p) { 
     $x: $x * $x; 
    } 
    } 
    @if $p < 0 { 
    $x: 1/$x; 
    } 

    @return $x + $u; 
} 

Часть, за которой я застреваю, снимает блоки. Я знаю, что 12px/1px = 12, но в моем случае устройство неизвестно, а 12px/1#{unit(12px)} не работает, потому что оно равно "12px/1px" (да, с кавычками). Функция unquote, похоже, не работает для меня, я не знаю, почему.

В случае, если вам интересно, причина, по которой я хочу разделить единицы (и вернуть их в конце), связана с тем, что 12px * 12px = 144px*px.

ответ

1

Вместо написание pow в Sass использовать рубин http://sass-lang.com/docs/yardoc/Sass/Script/Functions.html

+0

Но тогда каждый, кто хочет использовать мои Примеси, которые используют 'Pow()' придется обезьяна патч Sass ... – silvenon

+0

Так сделайте это как драгоценный камень. – Hauleth

+0

Это отличная идея :) – silvenon