2012-11-07 19 views
69

मैं सक्षम होना चाहते हैं की गणना निम्न कार्य करें: जाहिर हैसास प्रतिशत शून्य से पिक्सल

height: 25% - 5px; 

जब मुझे लगता है कि मैं त्रुटि मिलती है:

Incompatible units: 'px' and '%'. 
+0

क्या आउटपुट * कर * यदि आप मिल सकता है? – cimmanon

+0

मुझे 'अवैध संपत्ति मान 'त्रुटि मिलती है। क्रोम के कैनरी बिल्ड सहित प्रत्येक ब्राउज़र में। –

+0

यदि कोई सास फ़ंक्शन है जो मुझे प्राप्त करता है तो मुझे वह अच्छा लगता है, मैं बस 'कैल्क' के साथ खेल रहा था ... –

उत्तर

144

सास मूल्यों पर गणित प्रदर्शन नहीं कर सकते कि नहीं कर सकते एक इकाई से अगले में परिवर्तित किया जाना चाहिए। सैस को यह जानने का कोई तरीका नहीं है कि पिक्सल या किसी अन्य इकाई के मामले में "100%" कितनी व्यापक है। यह केवल ब्राउज़र ही जानता है।

इसके बजाय आपको calc() का उपयोग करने की आवश्यकता है। Check browser compatibility on Can I use...

.foo { 
    height: -webkit-calc(25% - 5px); 
    height: -moz-calc(25% - 5px); 
    height:   calc(25% - 5px); 
} 

अपने मूल्यों चर में हैं, तो आप प्रक्षेप उन्हें तार (अन्यथा सास सिर्फ अंकगणित को निष्पादित करने की कोशिश करता) में बदल उपयोग करने की आवश्यकता हो सकता है:

$a: 25%; 
$b: 5px; 

.foo { 
    width: -webkit-calc(#{$a} - #{$b}); 
    width: -moz-calc(#{$a} - #{$b}); 
    width:   calc(#{$a} - #{$b}); 
} 
+5

का उपयोग करना, मैं कहूंगा कि कैल्क () अधिकांश ब्राउज़रों में सभी काम नहीं करता है। मोबाइल प्लेटफार्म डेस्कटॉप के रूप में उतना ही महत्वपूर्ण हैं। – dalgard

+2

कोई तर्क नहीं है, लेकिन ब्राउज़र गिनें! अधिक समर्थन कैल्क() नहीं, और इससे भी अधिक निकट भविष्य में इसका समर्थन करेगा! – chrisgonzalez

+3

मुझे कैल्क फ़ंक्शन के अंदर एक चर का उपयोग करके चौड़ाई समस्याएं थीं, लेकिन यहां मिली: http: // stackoverflow।कॉम/प्रश्न/13542164/उपयोग-चर-इन-एसएएस-प्रतिशत-फ़ंक्शन जो मैं इस तरह के चर को संदर्भित कर सकता हूं: 'calc (25% - # {$ var})'। – mlunoe

2

अगर आप की चौड़ाई पता कंटेनर, आप ऐसा कर सकते हैं:

#container 
    width: #{200}px 
    #element 
    width: #{(0.25 * 200) - 5}px 

मुझे पता है कि कई मामलों में # कंटेनर एक रिलेट हो सकता है ive चौड़ाई। तो यह काम नहीं करेगा।

2

पुराने धागे को पुनर्जीवित करने के लिए खेद है - कम्पास 'के साथ खिंचाव: छद्म चयनकर्ता आपके उद्देश्य के अनुरूप हो सकता है - उदाहरण के लिए। (50% + 10px) स्क्रीन के आप (एस.ए.एस.एस. दांतेदार वाक्य रचना में) इस्तेमाल कर सकते हैं बाएं से यदि आप एक div चौड़ाई भरना चाहते हैं:

.example 
    background: red 
    +stretch(0, -10px, 0, 0) 
    &:after 
     +stretch(0, 0, 0, 50%) 
     content: ' ' 
     background: blue 

: के बाद तत्व .example के अधिकार के लिए 50% भरता है (.example की चौड़ाई के लिए 50% उपलब्ध छोड़कर), फिर .example उस चौड़ाई और 10px तक फैला हुआ है।

+1

क्या कहीं कहीं कम या सास मिश्रण है? कैल्क बहुत अच्छी तरह से काम नहीं कर रहा है। – v3nt

11

एससीएसएस [संकलन-समय] और सीएसएस [रन-टाइम] दोनों में calc फ़ंक्शन है। आप शायद बाद वाले के बजाय पूर्व का आह्वान कर रहे हैं।

स्पष्ट कारणों से मिश्रण इकाइयों संकलन-समय पर काम नहीं करेंगे, लेकिन रन-टाइम पर होंगे।

आप बाद में unquote, एक एससीएसएस फ़ंक्शन का उपयोग कर मजबूर कर सकते हैं।

.selector { height: unquote("-webkit-calc(100% - 40px)"); } 
5
$var:25%; 
$foo:5px; 
.selector { 
    height:unquote("calc(#{$var} - #{$foo})"); 
} 
+1

इस प्रश्न का उत्तर पोस्ट करने के लिए धन्यवाद! कोड-केवल उत्तर स्टैक ओवरफ़्लो पर निराश होते हैं, क्योंकि किसी संदर्भ के साथ कोड डंप यह नहीं बताता कि समाधान कैसे काम करेगा या क्यों, मूल पोस्टर (या भविष्य के पाठकों) के लिए तर्क को समझना मुश्किल हो जाता है। कृपया, अपना प्रश्न संपादित करें और अपने कोड का स्पष्टीकरण शामिल करें ताकि अन्य आपके उत्तर से लाभ उठा सकें। धन्यवाद! –

+0

जिसने मुझे बचाया। चौड़ाई: unquote ("कैल्क (100% - # {$ leftnav-width})"); – httpete

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