Sass @if真实陈述不起作用

McS*_*man 9 if-statement function 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;
}
Run Code Online (Sandbox Code Playgroud)

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

error style.scss (Line 36 of _functions.scss: Undefined variable: "$unit".)
Run Code Online (Sandbox Code Playgroud)

我在这做错了什么?

Ye *_*Liu 12

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

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

    @if $rem == true {
        $unit: 0rem;
    }
    ...
}
Run Code Online (Sandbox Code Playgroud)


cim*_*non 7

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

$unit: if($rem, 0rem, 0em);
Run Code Online (Sandbox Code Playgroud)

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