2016-01-20 7 views
7
#foo{font-size:14px;} 

अब #foo 14px फ़ॉन्ट आकारसीएसएस मूल्य अपेक्षाकृत बदल सकते हैं?

#foo{font-size:$-2px} // Hypothetical code 

अब #foo 12px फ़ॉन्ट आकार है है। (14 पीएक्स - 2 पीएक्स)

क्या यह किसी भी माध्यम से संभव है? एक चयनकर्ता के मूल्य को गतिशील रूप से बदलने के लिए।

+1

आप उन्हें इस्तेमाल कर सकते हैं - माता-पिता के सापेक्ष। उदाहरण के लिए, यदि फ़ॉन्ट आकार: 1.5em इसका मतलब है कि यह माता-पिता के फ़ॉन्ट आकार से 1.5 गुना बड़ा होगा। यदि आपको वास्तविक गणना की आवश्यकता है, तो भी मैं कम या एसएएस का उपयोग करने की सलाह देता हूं। –

+0

सीएसएस वर्तमान में वर्तमान मूल्य के सापेक्ष मूल्य को संशोधित करने के लिए कोई तरीका नहीं है। हम इसके लिए जावास्क्रिप्ट का उपयोग कर सकते हैं। –

+0

हम्म .. क्या आप उदाहरणों के साथ कोई लिंक पोस्ट कर सकते हैं, या मैं कहां से शुरू कर सकता हूं? – dominotrix

उत्तर

3

1. का प्रयोग calc() विधि

मुझे समझ नहीं आता आप गतिशील रूप से बदल द्वारा क्या मतलब है। लेकिन सापेक्ष गणना करने के लिए, calc() विधि का उपयोग करें।

उदाहरण:

width: calc(100% - 80px); 

2. एस.ए.एस.एस.

तरह पूर्वप्रक्रमक का उपयोग करते हुए आप यह भी पूर्व प्रसंस्करण के लिए Sass जांच करना चाह सकते। अच्छी तरह से समर्थित सुविधाओं में से एक, चर हैं।

आप चर परिभाषित कर सकते हैं और कुछ गणना कर सकते हैं। jsfiddle

संदर्भ:: SASS

3. jQuery

ओपी आकार जब भी विंडो का आकार बदल बदलने के बारे में उल्लेख किया है का उपयोग करते हुए

$body-size: 200px; 

body { 
    width: $body-size/2 ; 
} 

यहाँ एक सरल उदाहरण मैं बनाया है। एक दृष्टिकोण jQuery

$(window).resize(function() { 
    var width = $(window).width(); 
    var height = $(window).height(); 

    $('#item').width(width); 
}); 

4. का उपयोग कर vw और vh विशेषताओं

ओपी टिप्पणी में व्यूपोर्ट के अनुसार आकार बदलने के लिए इच्छुक के बारे में उल्लेख किया है का उपयोग करना होगा।

vw और vh क्रमशः व्यूपोर्ट चौड़ाई और ऊंचाई के सापेक्ष है।

div.responsive { 
    width: 10vw; /* 10% of viewport width */ 
    height: 10vh; /* 10% of viewport height */ 
    background-color: black; /* Just to make it visible while testing */ 
} 
+0

यह काफी मदद नहीं करता क्योंकि कैल्क का उपयोग पहले से ज्ञात मान के लिए किया जाता है। मैं एक कोड का उपयोग करना चाहता हूं जहां मैं पहला मान नहीं जान पाऊंगा (मेरे उदाहरण में, 14 पीएक्स मूल्य)। – dominotrix

+0

शायद "गतिशील" शब्द सही नहीं था। मैं यह बताने की कोशिश कर रहा हूं कि यदि सीएसएस या किसी अन्य माध्यम से यह संभव है, तो किसी भी चयनकर्ता के मूल्य को बिना किसी मूल्य के जानने के मूल्य को बदलने के लिए। मुझे नहीं पता #foo में 14px फ़ॉन्ट आकार है। लेकिन मैं चाहता हूं कि इसमें 2px हो जो उसके पास पहले से ही एक मूल्य के रूप में है। – dominotrix

+0

@dominotrix: आप #foo के आकार को कैसे नहीं जानते? क्या यह कहीं सेट है? शायद आप सास में चर का उपयोग कर सकते हैं। फिर आकार को $ variable2px पर रीसेट करें। – geckob

3

आप rem का उपयोग कर सकते हैं जो वैश्विक फ़ॉन्ट आकार का संदर्भ देगा।

:root 
 
{ 
 
    font-size : 14px; 
 
} 
 

 
#foo 
 
{ 
 
    font-size : calc(1rem - 2px); 
 
}
<div> 
 
    I am a 14px text according to the root font-size 
 
</div> 
 
<div id="foo"> 
 
    I am a 12 pixel text according to the rem font-size 
 
</div>

व्याख्या

रेम वैश्विक सीएसएस के पास भेजेगा। तो जब प्रसंस्करण (1rem - 2px), यह वास्तव में (14px - 2px) है।

+0

हम्म, भले ही आप सही हैं, यह मेरी सामान्य समस्या का एक कस्टम उत्तर है। आपके द्वारा लिखे गए इस स्निपेट, केवल इस सटीक चीज़ के लिए काम करेंगे। दुर्भाग्य से यह एक सीधा समाधान प्रदान नहीं करता है क्योंकि शायद कोई नहीं है। शायद एसएएसएस/कम के साथ। फिर भी, आपके समय के लिए धन्यवाद! – dominotrix

+0

इंडेड, कॉम्प्लेक्स कैलकुस से निपटने पर, एसएएसएस शक्तिशाली होने का खुलासा करता है। यह इस तकनीक की सीमा है। –

1

मेरा $ 2/100।अब तक

  1. सीएसएस, क्रॉस-ब्राउज़र अनुमति नहीं देता भावना का सच्चा में चर, लेकिन आप इस CSS Variables Official Doc में रुचि हो सकती।
  2. सीएसएस चर का समर्थन नहीं कर रहा है, सीएसएस प्रीप्रोसेसर मौजूद सबसे महत्वपूर्ण कारणों में से एक है। जैसे। SASS, LESS
  3. आप कुछ तत्व गुणों को नियंत्रित करने के लिए font-size और फिर em का उपयोग कर सकते हैं, लेकिन यह कुछ हद तक अजीब है, और आप अलग-अलग बच्चों के तत्वों पर फ़ॉन्ट-आकार निर्दिष्ट करना समाप्त कर देंगे।

    .example { 
        font-size: 20px; 
        border-radius: .5em; // 10px (20*.5) 
        padding: 2em; // 40px (20*2) 
    } 
    
संबंधित मुद्दे