Sass @if真实陈述不起作用

时间:2013-06-17 21:24:28

标签: function if-statement sass

我正在尝试创建一个将像素大小转换为ems或rems的函数。功能如下:

@function px2em($pixels, $fontSize: 16, $rem: false) {
    @if $rem == true {
        $unit: 0rem;
    } @else {
        $unit: 0em;
    }
    $ratio: 1 / $fontSize;
    @return ($pixels * $ratio) + $unit;
}

当我编译它时,我收到以下错误:

error style.scss (Line 36 of _functions.scss: Undefined variable: "$unit".)

我在这里做错了什么?

2 个答案:

答案 0 :(得分:11)

SASS有block scope,在一个区块中定义的变量只能在该范围内使用。所以你想在if-else块之外使用$ unit,所以你应该这样声明:

@function px2em($pixels, $fontSize: 16, $rem: false) {
    $unit: 0em;

    @if $rem == true {
        $unit: 0rem;
    }
    ...
}

答案 1 :(得分:7)

在此特定实例中,您可能希望使用if()函数,而不是@if语句

$unit: if($rem, 0rem, 0em);

http://sass-lang.com/docs/yardoc/Sass/Script/Functions.html#if-instance_method