2012-09-08 8 views
41

मुझे पता है तुम एस.ए.एस.एस. में संख्या से इकाइयों पट्टी सकता है जब आप पहले हाथ इस तरह इकाई पता: जानते हुए भी क्या इकाई पहला है बिनाएसएएसएस में किसी भी संख्या से इकाई को कैसे पट्टी कर सकते हैं?

$number: 16px; 
$without-unit: 16px/1px; 
@warn $without-unit; // 16 

लेकिन यह संभव है एक नंबर से इकाई पट्टी?

@function strip-unit($number) { 
    // magic code here... 
} 

@warn strip-unit(16px); // 16 
+0

यह मुझे आश्चर्यचकित करता है कि यह कोर SASS फ़ंक्शन –

उत्तर

101

-

अद्यतन: आप वास्तव में कभी इस सुविधा का उपयोग करने की जरूरत है चाहिए। सास गणित इकाइयों के बारे में बहुत स्मार्ट है, और मैंने कभी भी उपयोग-मामला नहीं देखा है जिसमें आपको आवश्यकतानुसार सही गणित का उपयोग करने से बेहतर विकल्प मिलना बेहतर विकल्प था। Sass issue thread देखें जहां इस पर चर्चा की गई है।

यह एक चालाक काम है, लेकिन यदि आप कभी इसका उपयोग करने की तरह महसूस करते हैं, तो शायद आपके गणित के साथ एक समस्या है। इस समारोह पर वापस मत आना। इसके बजाय अपने गणित को ठीक करें।

-

आप एक ही इकाई के 1 से विभाजित करने के लिए की जरूरत है। आप unit() का उपयोग करते हैं, तो आप एक नंबर के बजाय एक स्ट्रिंग मिलता है, लेकिन अगर आप शून्य से गुणा करें और 1 जोड़ने के लिए, आप क्या जरूरत है:

@function strip-units($number) { 
    @return $number/($number * 0 + 1); 
} 

काम करता है। strip-units(13.48cm)13.48 वापस करेगा।

+0

शानदार नहीं है; यह वही तरीका है जो मैं कर रहा हूं। –

+0

क्रूर, एक बार जब आप इसे समझ लेंगे। बस genious! –

+0

ध्यान दें कि यह आमतौर पर अनुशंसित नहीं है। मैंने अभी तक * सास में संख्याओं से इकाइयों को पट्टी करने का एक अच्छा कारण नहीं पाया है। मैंने कई परिस्थितियों में भाग लिया है जहां यह एक अच्छा विचार प्रतीत होता है - लेकिन सास यूनिट-गणित के बारे में इतना स्मार्ट है, जिससे इकाइयों को हमेशा अंत में सर्वोत्तम/सरल परिणाम मिलते हैं। –

0

मुझे लगता है कि आप इकाइयों पट्टी के लिए एक कस्टम रूबी समारोह जोड़ने के लिए (adding custom functions पर दस्तावेज़ देखें) होगा। यह कुछ इस तरह विचार करेंगे, मुझे लगता है कि (चेतावनी, untested):

module Sass::Script::Functions 
    def strip_units(num) 
    assert_type num, :Number 
    Sass::Script::Number.new(num.value) 
    end 
end 
संबंधित मुद्दे