2016-02-24 6 views
8

मेरे पास निम्न कोड है जो मेरी सामग्री को केंद्रित करने के साथ बहुत अच्छा काम करता है जब तक कि vh650px से कम न हो। मैं सोच रहा था कि इस मूल्य को 0 से नीचे कभी भी सीएसएस calc का उपयोग करने का कोई तरीका नहीं था।क्या सीएसएस कैल्क() कभी नकारात्मक मान नहीं बनने का कोई तरीका है?

.my-margin-top { 
    margin-top: calc(50vh - 325px); 
} 

उत्तर

15

को आधार मान कोई रास्ता नहीं करने के लिए मानों आप एक mediaquery इस्तेमाल कर सकते हैं जब max-height650px

.my-margin-top { 
    margin-top: calc(50vh - 325px); 
} 

@media all and (max-height: 650px) { 
    .my-margin-top { 
     margin-top: 0; 
    } 
} 

ज्यादा से ज्यादा है या आप भी में मौजूदा नियम लपेटकर द्वारा तर्क वापस लौटने सकता है calc() द्वारा गणना स्वाभाविक है कि वहाँ एक min-height mediaquery

@media all and (min-height: 650px) { 
    .my-margin-top { 
     margin-top: calc(50vh - 325px); 
    } 
} 
+0

महान उत्तर मैं इसे 'अधिकतम-ऊंचाई' में बदलने के लिए एक टिप्पणी कर रहा था, जिसे आपने इसे प्राप्त करने से पहले किया था। मुझे विश्वास नहीं है कि मैं मीडिया क्वेरी के बारे में सोच नहीं रहा था। – cmorrissey

+2

@cmorrissey: निष्पक्ष होने के लिए, आपका उपयोग केस केवल * होता है * व्यूपोर्ट इकाइयों को प्रदर्शित करने के लिए जो मीडिया क्वेरी में खुद को उधार देता है। आम तौर पर, आप बस कैल्क() अभिव्यक्ति के परिणामों की एक निश्चित सीमा के परिणाम को क्लैंप नहीं कर सकते हैं - सीएसएस को इसके लिए न्यूनतम() और अधिकतम() का कुछ रूप प्रदान करना होगा। – BoltClock

+0

@ बोल्टक्लॉक एक अपवाद तब होगा जब कैल्क() ऊंचाई/चौड़ाई की गणना कर रहा है ताकि आप न्यूनतम/अधिकतम ऊंचाई/चौड़ाई (मीडियाक्वियर के बिना भी) तक सीमित हो सकें, http://stackoverflow.com/a/35505372/1098851 – fcalderan

3

सामान्य सवाल का जवाब करने के लिए:

क्या सीएसएस कैल्क() कभी नकारात्मक मूल्य नहीं बनने का कोई तरीका है?

उत्तर नहीं है, क्योंकि सीएसएस कुछ न्यूनतम या अधिकतम मूल्य को मात्रा को मैन्युअल रूप से बाध्य करने (या क्लैंप) करने का कोई तरीका प्रदान नहीं करता है।

चाहे कोई संख्या या लंबाई हो सकता है किसी निश्चित सीमा तक सीमित है उस संपत्ति पर निर्भर है जिसमें calc() मान है। spec से:

अभिव्यक्ति से उत्पन्न मूल्य लक्ष्य संदर्भ में अनुमत सीमा तक क्लैंप किया जाना चाहिए।

ये दोनों 'चौड़ाई: 0 पीएक्स' के बराबर हैं क्योंकि 0px से छोटी चौड़ाई की अनुमति नहीं है।

width: calc(5px - 10px); 
width: 0px; 

उदाहरण के लिए, जबकि margin और z-index के मान ऋणात्मक border-width, padding, height, width के लिए मान्य है, नकारात्मक मान हैं और इतने पर नहीं हैं। इनकी विशिष्टताओं को संबंधित संपत्ति के विनिर्देशन में लगभग हमेशा परिभाषित किया जाता है।

जैसा कि आप अपने उदाहरण में व्यूपोर्ट इकाइयों का उपयोग करते हैं, आप उनके साथ demonstrated by fcalderan के रूप में मीडिया प्रश्नों को नियोजित कर सकते हैं।

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