2013-06-17 7 views
5

픽셀 크기를 ems 또는 rems로 변환하는 함수를 만들려고합니다.Sass @if true 문이 작동하지 않습니다.

@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 갖는다. 따라서이 경우 - 다른 블록의 외부 $ 단위를 사용하려면, 그래서 당신은 다음과 같이 선언한다 :

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

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

그래서 당신은 @if 문 내부 변수를 선언하지 못할? – McShaman

+0

@McShaman 내 대답을 업데이트했습니다. if 블록에서 실제로 변수를 선언 할 수 있지만 그 변수는 해당 블록에서만 사용할 수 있습니다. 이 주제에 대한 또 다른 질문입니다 : http://stackoverflow.com/questions/15371332/sass-ignores-variables-defined-in-if-statement –

관련 문제