2012-08-07 13 views
16

क्या वैसे भी है कि मैं गणितीय अभिव्यक्ति के रूप में एक सीएसएस मान लिख सकता हूं? उदाहरण:सीएसएस मूल्य गणितीय अभिव्यक्ति के रूप में

div{ 
    height: 50% + 30px; 
    width: 40em - 5px; 
    } 

अगर वहाँ है, यह अधिक उचित होगा।
पीएस: मैं जेएस या JQuery के साथ ऐसा नहीं करना चाहता हूं।

+0

नहीं क्यों जावास्क्रिप्ट का उपयोग करें? – Wex

+0

मैं इसे किसी भी प्रकार के विंडो आकार के लिए बनाने की कोशिश कर रहा हूं। अगर मैं इसे जेएस पर लिखने की योजना बना रहा हूं तो मुझे '.ready() 'और' .resize()' कार्यों को लिखना चाहिए जो मैं नहीं करना चाहता हूं। –

उत्तर

24

आप इसे सीएसएस 3 calc() के साथ प्राप्त कर सकते हैं। इस तरह लिखें: के लिए इस चर्चा

div{ 
    width: 40%; 
    width: -webkit-calc(40% - 5px); 
    width: -moz-calc(40% - 5px); 
    width: calc(40% - 5px); 
    height:50%; 
    height: -webkit-calc(50% + 50px); 
    height: -moz-calc(50% + 50px); 
    height: calc(50% + 50px); 
    background: green; 
    color: white; 
    position:absolute; 
} 

चेक इस http://jsfiddle.net/3QUw6/

चेक अधिक Is it possible to make a div 50px less than 100% in CSS3?

+0

यही वह है जिसे मैं ढूंढ रहा था। –

+0

लेकिन सवाल यह है कि आप इसका उपयोग क्यों करना चाहते हैं? – Wex

+1

प्लस, अनुकूल नहीं Wex

3

आप सीएसएस के साथ ऐसा नहीं कर सकते, लेकिन आप जा सकते थे (और भी बहुत कुछ) एक सीएसएस पूर्वप्रक्रमक के साथ, LESS, SASS या मेरी पसंदीदा Stylus की तरह। यह अंतिम आउटपुट सादा पुराना सीएसएस है, लेकिन इसे पहले संकलित किया जाना चाहिए।

+0

मुझे यह नहीं पता था। बहुत उपयोगी लगता है। –

+0

मेरे दिमाग में आने वाला पहला कम था, लेकिन यदि तत्व का आकार सामग्री पर निर्भर है तो कम सही आकार का अनुमान लगाने में सक्षम नहीं होगा, इस प्रकार कुछ विशेष मामलों में अमान्य प्रस्तुत करना, इसके अलावा, यह एक होगा सही समाधान लेकिन इसके लिए, CSS3 बेहतर imho है। –

2

padding और margin दोनों वस्तुओं के आयामों को जोड़ने के लिए उपयोग किया जा सकता है। मेरा सुझाव है कि आप box model पर पढ़ लें।

HTML:

<div id="container"> 
    <div class="wrapper"> 
     <div>...</div> 
    </div> 
</div> 

सीएसएस:

.wrapper { 
    width: 40em; 
    height: 50%; 
    padding: 15px 0; /* Top and bottom padding of 15px */ } 

/* Block-level element will take up 100% of the 
    container width, minus {margin_right} + {marign_left} */ 
.wrapper > div { margin: 0 0 0 5px; } 
2

सीएसएस में calc() समारोह पर एक नजर डालें। उम्मीद है कि इसके लिए समर्थन ब्राउज़र में बढ़ेगा।

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