2012-01-12 14 views
10

मैं सीएसएस सीख रहा हूं, और स्टैक ओवरव्लो पर रिलेटिव बनाम पूर्ण फ़ॉन्ट आकार के बारे में प्रश्न पढ़ रहा था। मैं दो धागे में आया था।संबंधित तत्व आकार बाल तत्वों पर मुश्किल हैं?


1. एक धागा (CSS font size: relative vs. absolute values. Which to use?) में, जवाब में से एक वास्तव में एक सवाल है कि उत्तर नहीं है: [उद्धरण]

प्रश्न, यहाँ कई का कहना है कि पंडित के लिए ही हैं प्रिंट। लेकिन क्या यह याद रखना अच्छा नहीं है कि पाठ को आकार को आकार देने के लिए तेज़ी से क्या करना चाहिए, यह याद किए बिना कि DIV में एम या% मान क्या है। उदाहरण के लिए, जब आप:

<body> 
<div id="box1"> 
    test text sample1 
    <div id="box2"> 
    test text sample2 
    <div id="box3"> 
     test text sample3 
     <div id="box4"> 
      test text sample4 
     </div> 
    </div> 
    </div> 
</div> 

मैं इसे अजीब संरचना की तरह है पता है, लेकिन कहते हैं कि एक ऐसा प्रतिरूप ग्राफिक प्रयोजनों और सीएसएस छवि लेयरिंग के लिए की तरह एक संरचना की जरूरत हैं। तो मैं बॉक्स 1 फ़ॉन्ट = 100%, बॉक्स 2 = 1.2em बनाना चाहता हूं। box3 = .8em, और box4 = 1.6em

अब समस्या यह है कि बॉक्स 1 से एम भी अपने सभी बच्चों में स्थानांतरित हो जाता है, अगर मैं गलत हूं तो मुझे सही करें, तो इसका मतलब है कि बॉक्स 2 बिल्कुल 1.2em नहीं है, और उस समय तक जब हम 4 फ़ॉन्ट आकार बॉक्स में जाते हैं तो यह कहना मुश्किल है कि यह क्या है। जबकि जब हम पीटी या पीएक्स का उपयोग करते हैं तो यह उस तरीके से रहता है जिस तरह से हम इसे रहना चाहते हैं।

हालांकि, पीएक्स आकार, लचीला हैं और जब मैं स्क्रीन से बहुत दूर बैठता हूं तो मैं अपने ब्राउज़र के मेनू में फोंट को बड़ा बनाना चाहता हूं। चलो इसका सामना करते हैं, यह सुविधाजनक है। तो पीएक्स आकार बाहर है। तो पीटी का उपयोग क्यों नहीं करें? ब्राउजर अंतर कितना बड़ा है? -


2. एक और धागा नंबर, गणना के साथ एक ही सवाल (Compounded relative font-sizes: a clean way to adopt the font-size of the child, not the parent element) है - एक उचित जवाब के बिना, अधिक explanative:,

उदाहरण के लिए अगर मेरे पास है:

td { font-size: 1.3em } 

h2 { font-size: 2em } 
h3 { font-size: 1.6em } 
p { font-size: 1.2 } 

और मेरे टेबल-सेल्स के अंदर शीर्षक/पैराग्राफ हैं, मुझे पता है कि मैं निम्नानुसार फ़ॉन्ट आकारों को जोड़कर बच सकता हूं:

td h2, td h3, td p { font-size: 1em } 

जिसके परिणामस्वरूप मेरी तालिका-कक्षों में शीर्षलेख/पैराग्राफ होंगे जो 1.3em (टीडी का) आकार का आकार है।

लेकिन जो भी मैं खोज रहा हूं वह प्रत्येक बच्चे तत्व के लिए मूल फ़ॉन्ट आकार का एक अच्छा, साफ तरीका है, माता-पिता की नहीं।

मैं सच में कर रहा से बचना चाहते हैं निम्नलिखित (और निश्चित रूप से मैं पिक्सल का उपयोग कर से बचने के लिए चाहते हैं): मैं

td h2 { font-size: 1.54em } // 1.3 x 1.54 ~ 2 
td h3 { font-size: 1.23em } // 1.3 x 1.23 ~ 1.6 
td p { font-size: 0.92em } // 1.3 x 0.92 ~ 1.2 

किसी को भी कम है, मैं उस का उपयोग कर रहा से परिचित के लिए और सोचा कि ऐसा करना चाहिए मेरे लिए गणना करने के लिए इसका उपयोग करने में सक्षम हो, उदाहरण के लिए। accessors का उपयोग कर:

td h2 { font-size: h2['font-size']/td['font-size'] } 

यह कम से कम मूल मूल्यों का प्रयोग करेंगे गणना करने के लिए, लेकिन बस के रूप में ऊपर और इसके अलावा के रूप में अनाड़ी लगता है, ऐसा लगता है कम नहीं रह गया है accessors वैसे भी समर्थन करता है।

यह अवधारणा में इतना आसान लगता है, मुझे लगता है कि जवाब मुझे चेहरे पर देख रहा है, लेकिन मैं थोड़ी देर के लिए इसके खिलाफ अपने सिर को टक्कर लगी हूं और जवाब कहीं भी नहीं ढूंढ पा रहा हूं।

कृपया मदद करें! इस बिंदु पर अगर कोई मुझे बताता है कि यह नहीं किया जा सकता है और यह आगे बढ़ना और पिक्सेल मूल्यों का उपयोग करना ठीक है, तो मैं उन्हें बहुत खुशी से विश्वास करूंगा! बिना


यह स्पष्ट अब क्या मेरे सवाल है हो सकता है ... वहाँ रिश्तेदार फ़ॉन्ट आकार (उस बात के लिए - - चौड़ाई, ऊंचाई, आदि की तरह या किसी सापेक्ष आकार) का उपयोग करने के लिए एक बेहतर तरीका है मूल तत्व द्वारा बच्चे तत्वों को प्रभावित किया जा रहा है?

उत्तर

2

संक्षिप्त उत्तर - नहीं, यह सीएसएस कैसे काम करता है।

लंबा उत्तर - सीएसएस, जैसा कि आप जानते हैं, कैस्केडिंग स्टाइल शीट्स के लिए खड़ा है। उस कैस्केड का एक हिस्सा यह है कि बाल तत्व अपने मूल तत्वों के गुणों का उत्तराधिकारी होंगे।

तकनीक मैं लोगों के एक नंबर का उपयोग करें (अपनी पुस्तक बुलेटप्रूफ सीएसएस, जो मेरा सुझाव में डैन सेडरहोम सहित) देखा है, बजाय 16px के विशिष्ट डिफ़ॉल्ट आधार फ़ॉन्ट आकार के साथ काम कर के, make the base font size equivalent to 10px है। मुझे नहीं पता कि यह आपके उदाहरण के डिजाइन में कितना मदद करेगा, लेकिन यह कुल मिलाकर एम-आधारित फोंट के साथ काम करने में मदद करेगा।

मुझे प्रतिशत और एम-आधारित फ़ॉन्ट आकार के बीच अंतर पर this article भी मिला। यह थोड़ा पुराना है, लेकिन प्रतिशत और एम के बीच की तुलना अभी भी मान्य है।

यह कहा गया है कि, आधुनिक ब्राउज़र पूरे पृष्ठ को ज़ूम करते हैं, इसलिए जब तक आपको आईई 6 का समर्थन नहीं करना पड़ेगा, तो आप पिक्सेल फ़ॉन्ट आकारों का उपयोग करने में सक्षम हो सकते हैं, खासकर यदि आपके डिज़ाइन को वास्तव में उस गठबंधन की आवश्यकता होती है (क्योंकि यदि आप 'कई तत्वों को घोंसला कर रहे हैं और उनमें कई अलग-अलग फ़ॉन्ट आकार हैं, शायद इसे डिजाइन करने का एक बेहतर तरीका है)।

इसके अलावा, जैसा @ JukkaK.Korpela कहा, टेबल सामान्य रूप से बढ़ रहा है टैग शामिल नहीं है, कि क्या < वें > और <thead> तत्वों के लिए हैं।

+0

सीएसएस में बहुत से सापेक्ष फ़ॉन्ट-आकार का उपयोग करना मतलब पृष्ठ लोड धीमा है (कम से कम पूर्ण मूल्यों का उपयोग करने की तुलना में) क्योंकि उन्हें अधिक प्रोसेसिंग की आवश्यकता होती है? –

+0

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

1

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

आम तौर पर टेबल में शीर्षक नहीं होते हैं, उदाहरण के लिए, जब तक आप लेआउट के लिए टेबल का उपयोग नहीं कर रहे हैं। कुछ लोग कह सकते हैं कि टेबल लेआउट उन्हें एक समस्या है, लेकिन मैं कहूंगा कि समस्या तालिका के लिए फ़ॉन्ट आकार सेट कर रही है। आपको ऐसा करने की ज़रूरत नहीं है; आप तालिका के अंदर विभिन्न तत्वों के लिए फ़ॉन्ट आकार सेट कर सकते हैं,

+0

तो, एक तरह से, सीएसएस साधन में भी कई रिश्तेदार फ़ॉन्ट आकार, पेज लोड धीमा (कम से कम पूर्ण मूल्यों का उपयोग करने की तुलना में) क्योंकि उन्हें अधिक प्रसंस्करण की आवश्यकता होती है? क्या वह सही है? –

+2

@ Kr1s, मुझे नहीं लगता कि दक्षता समस्या प्रासंगिक है। मैं * संलेखन * में गणना का जिक्र कर रहा था, यानी लेखक को अपने स्वयं के फ़ॉन्ट आकार सेटिंग्स वाले नेस्टेड तत्व होने पर उपयुक्त कारकों को खोजने के लिए कुछ गणना करने की आवश्यकता है। –

1

बॉक्स दो बिल्कुल 1.2em है, लेकिन यह आवश्यक नहीं है 1.2 rem

remem के रूप में लगभग एक ही है, लेकिन यह css3 का हिस्सा है, और यह है ... (from the docs)

मूल तत्व पर 'font-size' की गणना मूल्य के बराबर।

जब रूट तत्व की 'फ़ॉन्ट-आकार' संपत्ति पर निर्दिष्ट किया गया है, तो 'rem' इकाइयां संपत्ति के प्रारंभिक मान को संदर्भित करती हैं।

0

फ़ॉन्ट आकार के लिए, एक तरीका जिस तरह से मैं कल्पना कर सकता हूं कि फ़ॉन्ट आकार को उस तत्व के करीब निर्दिष्ट करना है जिसे आप जितना संभव हो सके फ़ॉन्ट आकार सेट करना चाहते हैं, और आपको कुछ अन्य पेश करने की आवश्यकता हो सकती है घोंसले के नियम को पास करने के लिए तत्व।

उदाहरण के लिए आपके कोड के प्रश्न के लिए, टेक्स्ट के प्रत्येक टुकड़े को एक अवधि के साथ लपेटें और फिर स्पैन पर फ़ॉन्ट आकार सेट करें। के रूप में इन फैला नहीं लगाए गए हैं, सभी फ़ॉन्ट आकार box1 के सापेक्ष हैं, यहाँ परिणाम https://jsfiddle.net/davenkin/pLype465/ है:

<div id="box1"> 
<span id="span1">test text sample1</span> 
<div id="box2"> 
    <span id="span2">test text sample2</span> 
    <div id="box3"> 
     <span id="span3">test text sample3</span> 
     <div id="box4"> 
      <span id="span4">test text sample4</span> 
     </div> 
    </div> 
</div>