2013-06-17 5 views
5

मैं एक ऐसा फ़ंक्शन बनाने की कोशिश कर रहा हूं जो एक पिक्सेल आकार को ईएमएस या रीम्स में परिवर्तित करता है।सास @if सच्चा बयान काम नहीं कर रहा है

@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 मैंने अपना जवाब अपडेट किया, एक नज़र डालें। यदि आप ब्लॉक में चर को वास्तव में घोषित कर सकते हैं, लेकिन वह चर केवल उस ब्लॉक में उपलब्ध होगा। इस विषय पर एक और एसओ सवाल है: http://stackoverflow.com/questions/15371332/sass-ignores-variables-defined-in-if-statement –

संबंधित मुद्दे