2012-07-29 17 views
11

देता है मैं एसएसएस में दो कस्टम उपयोगिता कार्यों का उपयोग कर सीएसएस से संबंधित गणना अनुकूलित करने की कोशिश कर रहा हूं।एक एसएएस/स्कैस फ़ंक्शन लिखना जो एक स्ट्रिंग

ईएमएस के लिए एक:

@function _em($wanted, $inherited) { 
    @return ($wanted/$inherited) + 'em'; 
} 

... और एक अन्य प्रतिशत के लिए:

@function _pc($wanted, $parent) { 
    @return (($wanted/$parent) * 100) + '%'; 
} 

... फिर उन्हें बुला इनलाइन:

body { 
    margin: _pc(40,1024); 
    font-size: _em(20,16); 
    line-height: _em(26,20); 
} 

न तो इनमें से लौट रहे हैं अपेक्षित Nem या N% स्ट्रिंग, हालांकि। (मुझे लगता है कि यह मेरे स्ट्रिंग संयोजन है - अर्थात गणना के अंत पर इकाई कथात्मक चिपकाने -। लेकिन मुझे यकीन नहीं कर रहा हूँ)

किसी को भी मैं गलत क्या कर रहा पर किसी भी प्रकाश डाला सकता है?

उत्तर

16

दरअसल, आपकी समस्या मिश्रण का नाम है। मैंने अभी यह खुद को खोजा है, लेकिन स्पष्ट रूप से आप एक अंडरस्कोर के साथ एक मिश्रण शुरू नहीं कर सकते हैं।

यह काम करता है: http://jsfiddle.net/B94p3/

@function -em($wanted, $inherited) { 
    @return ($wanted/$inherited) + 'em'; 
} 

@function -pc($wanted, $parent) { 
    @return (($wanted/$parent) * 100) + '%'; 
} 

p { 
    font-size: -em(40,16); 
} 
+0

धन्यवाद अयमान के रूप में उपयोग कर सकते हैं कि हालांकि कुछ कष्टप्रद है। सोचो कि मैं बस पीसी (एक्स, वाई) और एम (एक्स, वाई) के साथ जाऊंगा क्योंकि एक कार्य के साथ उपसर्ग फ़िक्स नाम अन्य देवताओं के लिए भ्रामक हो सकता है। – markedup

+5

किसी भी व्यक्ति के लिए संदर्भ के लिए, लेकिन स्ट्रिंग आउटपुट के बिना, बस एसएएसएस इंटरपोलेशन सिंटैक्स में रिटर्न लपेटें, उदाहरण के लिए: '@ फ़ंक्शन -पीएक्स-टू-पीसी ($ चाहता था, $ पैरेंट) { @return # {(($ चाहता/$ माता पिता) * 100) + '%'}; } ' –

+0

धन्यवाद, जैस्मीन, यह सबसे अच्छा समाधान है-अन्यथा सास गणना को डंप करने लगता है + सीएसएस नियम मूल्य के रूप में एक शाब्दिक उद्धृत स्ट्रिंग के रूप में concatenation! – markedup

-1

इसी तरह, मैं px से rem को इकाई परिवर्तित करने के लिए इस समारोह में लिखा था।

आप तदनुसार संशोधित कर सकते हैं।

$is-pixel: true; 
$base-pixel: 16; 

@function unit($value) { 
    @if $is-pixel == true { 
    $value: #{$value}px; 
    } @else { 
    $value: #{$value/$base-pixel}rem; 
    } 
    @return $value; 
} 

अब, एक, निम्नलिखित

.my-class { 
    width: unit(60); 
    height: unit(50); 
} 
संबंधित मुद्दे