2013-06-17 18 views
5

ピクセルサイズをemsまたはremsに変換する関数を作成しようとしています。次のように関数は次のとおりです。Sass @if true statement not working function

@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".) 

やっていますか?

答えて

8

SASSにはblock scopeがあり、1つのブロックで定義された変数はそのスコープ内でしか使用できません。ですから、もし-elseブロックの外で$ユニットを使用したいので、あなたはこのようにそれを宣言する必要があります

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

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

だから@if文の内部で変数を宣言カント? – McShaman

+0

@McShaman私は自分の答えを更新しました。実際にはifブロック内の変数を宣言することはできますが、その変数はそのブロック内でのみ使用可能になります。このトピックに関するもう1つの質問があります:http://stackoverflow.com/questions/15371332/sass-ignores-variables-defined-in-if-statement –