我正在尝试创建一个将像素大小转换为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".)
我在这里做错了什么?
答案 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