Skip to content
This page has been auto-translated and may contain errors.View in English

आकार और इकाइयाँ

docs.scrimba.com

आप पिक्सेल में एक फॉन्ट साइज़ सेट करते हैं, पृष्ठ भेजते हैं, और एक पाठक जिन्होंने आराम के लिए अपने ब्राउज़र पाठ को बढ़ा दिया है कोई बदलाव बिल्कुल नहीं देखता है। आप एक कार्ड को एक निश्चित चौड़ाई देते हैं और यह फोन पर ओवरफ्लो हो जाता है। दोनों एक ही सवाल में आते हैं: जब आप CSS में एक संख्या टाइप करते हैं, तो वह संख्या किसके विरुद्ध मापी जाती है? कुछ इकाइयाँ निश्चित हैं, कुछ एक फॉन्ट तक स्केल करती हैं, कुछ माता-पिता के लिए स्केल करती हैं, और कुछ स्क्रीन के लिए स्केल करती हैं। एक बार जब आप जानते हैं कि कौन सी है, आप अनुमान लगाना बंद कर देते हैं और उस इकाई को चुनते हैं जो काम करती है।

निरपेक्ष बनाम सापेक्ष इकाइयाँ

CSS इकाइयाँ दो परिवारों में विभाजित होती हैं। एक निरपेक्ष इकाई एक निश्चित आकार है जो कभी नहीं बदलता: px (एक पिक्सेल) वह है जो आप हर जगह देखेंगे। एक सापेक्ष इकाई एक आकार है जो किसी और चीज़ के लिए स्केल करता है, जैसे पाठक का फॉन्ट साइज़ या स्क्रीन की चौड़ाई।

एक कमरे को मापने के बारे में सोचें। सेंटीमीटर निरपेक्ष हैं: एक दीवार 400 सेमी है चाहे आप लंबे हों या छोटे। "मेरी तीन पदक्षेप" सापेक्ष है: यह इस बात पर निर्भर करता है कि किसके पैर चल रहे हैं। निरपेक्ष इकाइयाँ आपको सटीक नियंत्रण देती हैं; सापेक्ष इकाइयाँ पृष्ठ को उस व्यक्ति के अनुकूल बनाती हैं जो उसे देख रहा है।

यह अनुकूलन महत्वपूर्ण है। कुछ पाठक एक बड़ा डिफ़ॉल्ट पाठ आकार सेट करते हैं क्योंकि यह उनकी आँखों के लिए आसान है। यदि आप अपने पाठ को सापेक्ष इकाई में आकार देते हैं, तो उनकी सेटिंग के माध्यम से ले जाई जाती है और पृष्ठ उनके अनुरूप बढ़ता है। यदि आप इसे पिक्सेल में लॉक करते हैं, तो यह जगह पर रहता है और उन्हें अनदेखा करता है।

CSS में हर लंबाई निरपेक्ष या सापेक्ष है, और अंतर तय करता है कि क्या आपका लेआउट अनुकूल हो सकता है। एक निरपेक्ष इकाई एक निश्चित आकार में हल करती है चाहे संदर्भ कुछ भी हो: px एकमात्र निरपेक्ष इकाई है जिसका आप वास्तव में उपयोग करेंगे, क्योंकि cm, pt, और बाकी प्रिंट के लिए लक्षित हैं। एक सापेक्ष इकाई एक संदर्भ के विरुद्ध हल करती है, और कौन सा संदर्भ इकाई पर निर्भर करता है: rem और em एक फॉन्ट साइज़ के लिए स्केल करते हैं, % माता-पिता के लिए स्केल करता है, vw और vh व्यूपोर्ट के लिए स्केल करते हैं।

अधिकांश आकार के लिए सापेक्ष इकाइयों को प्राथमिकता देने का कारण पहुँच और प्रतिक्रियाशीलता है। जब कोई पाठक अपने ब्राउज़र का डिफ़ॉल्ट फॉन्ट साइज़ बढ़ाता है, तो rem में आकार की गई कोई भी चीज़ इसके साथ बढ़ती है, जबकि px में पिन की गई कोई भी चीज़ निश्चित रहती है और इसके चारों ओर लेआउट को तोड़ सकती है। यही स्क्रीन आकारों में भी होता है: सापेक्ष इकाइयाँ एक स्टाइलशीट को फोन और मॉनिटर दोनों के लिए फिट करने देती हैं, जो प्रतिक्रियाशील डिज़ाइन की बुनियाद है।

आप जो इकाई चुनते हैं वह एक निर्णय है कि आपकी संख्या किसके लिए लंगर डाली गई है, और वह लंगर तय करता है कि क्या लेआउट पाठक के लिए प्रतिक्रिया करता है या उन्हें अनदेखा करता है। एक निरपेक्ष इकाई हर संदर्भ में समान गणना की गई लंबाई में हल करती है। स्क्रीन CSS में यह प्रभावी रूप से केवल px है: भौतिक इकाइयाँ (cm, mm, in, pt, pc) पिक्सेल के सापेक्ष परिभाषित हैं (1in परिभाषा के अनुसार 96px है) और प्रिंट स्टाइलशीट से संबंधित हैं। एक सापेक्ष इकाई एक संदर्भ के विरुद्ध हल करती है जो बदल सकता है, जो इसे अनुकूल बनाता है।

संदर्भ पूरा खेल है, इसलिए यह नाम देने के लायक है कि हर सापेक्ष इकाई किस पर इंगित करती है। rem और em फॉन्ट-सापेक्ष हैं: वे एक फॉन्ट साइज़ के विरुद्ध हल करते हैं (रूट का या तत्व का)। % अधिकांश गुणों के लिए माता-पिता-सापेक्ष है: एक प्रतिशत चौड़ाई युक्त ब्लॉक की चौड़ाई का एक अंश है। vw और vh व्यूपोर्ट-सापेक्ष हैं: ब्राउज़र व्यूपोर्ट (पृष्ठ का दृश्यमान क्षेत्र) का एक अंश। व्यावहारिक नियम इससे निकलता है: प्रकार और लेआउट को सापेक्ष इकाइयों में आकार दें, px को उन चीजों के लिए रखें जो स्केल नहीं करनी चाहिए। एक पाठक जो एक बड़ा डिफ़ॉल्ट फॉन्ट साइज़ सेट करता है, या पृष्ठ को ज़ूम करता है, सापेक्ष इकाइयों को इंगित करने वाले संदर्भ को स्थानांतरित करता है, इसलिए पृष्ठ उनसे मिलने के लिए बढ़ता है; एक px मान के पास कोई संदर्भ नहीं है और जगह पर रहता है, जो पहुँच विफलता है जिसे आप टालने की कोशिश कर रहे हैं।

Junoनिरपेक्ष बनाम सापेक्ष इकाइयाँpx जैसी निरपेक्ष इकाइयाँ एक निश्चित आकार हैं जो कभी नहीं बदलती हैं। सापेक्ष इकाइयाँ पाठक के फॉन्ट साइज़ या स्क्रीन की चौड़ाई जैसी किसी और चीज़ के लिए स्केल करती हैं। सापेक्ष इकाइयाँ पृष्ठ को उस व्यक्ति के अनुकूल बनाती हैं जो इसे देख रहा है, जो उन पाठकों के लिए महत्वपूर्ण है जो एक बड़े पाठ आकार को सेट करते हैं।
Junoनिरपेक्ष बनाम सापेक्ष इकाइयाँpx एकमात्र निरपेक्ष इकाई है जिसका आप वास्तव में उपयोग करेंगे; बाकी सब कुछ एक संदर्भ के लिए स्केल करता है। rem और em एक फॉन्ट के लिए स्केल करते हैं, % माता-पिता के लिए, vw और vh व्यूपोर्ट के लिए। सापेक्ष इकाइयों के लिए पहुँचें ताकि पृष्ठ बढ़े जब कोई पाठक अपना डिफ़ॉल्ट फॉन्ट साइज़ बढ़ाता है, बजाय उन्हें अनदेखा करने के।
Junoनिरपेक्ष बनाम सापेक्ष इकाइयाँ हर इकाई एक संख्या प्लस एक लंगर है, और लंगर तय करता है कि क्या लेआउट प्रतिक्रिया कर सकता है। px के पास कोई लंगर नहीं है जो चलता है, इसलिए यह कभी अनुकूल नहीं होता; rem और em एक फॉन्ट के लिए लंगर डालते हैं, % माता-पिता के लिए, vw और vh व्यूपोर्ट के लिए। प्रकार और लेआउट को सापेक्ष इकाइयों में आकार दें और px को उन भागों के लिए रखें जो निश्चित रहने चाहिए।

पिक्सेल और जब वे ठीक हैं

एक पिक्सेल (px) लंबाई की एक छोटी निश्चित इकाई है। यह सबसे सीधी है, क्योंकि 16px हमेशा 16px होता है। जो यह एक अच्छा फिट है छोटी चीजों के लिए जो समान आकार में रहनी चाहिए: एक सीमा की मोटाई, एक छोटा गोल कोना, एक निश्चित आइकन।

css
.card {
  border: 1px solid #ccc;      /* एक बालों जैसी सीमा, हमेशा 1px */
  border-radius: 8px;          /* एक निश्चित गोल कोना */
}

पकड़ यह है कि एक पिक्सेल पाठक की परवाह नहीं करता है। यदि किसी ने अपने ब्राउज़र को बड़ा पाठ दिखाने के लिए सेट किया है, तो एक शीर्षक जिसे आपने 24px पर लॉक किया है 24px पर रहता है और उनकी पसंद को अनदेखा करता है। यह है कि क्यों px सीमाओं और छोटे विवरण के लिए एक अच्छी पसंद है, लेकिन पाठ के लिए यह इकाई नहीं है।

px वह इकाई है जिसे आप पहुँचते हैं जब आप चाहते हैं कि एक लंबाई जगह पर रहे: सीमाएँ, बाल विभाजक, छोटे निश्चित त्रिज्या, और कभी-कभी एक आइकन जो स्केल नहीं करना चाहिए। उन के लिए, इसकी दृढ़ता बात है। एक 1px सीमा जो पाठक के फॉन्ट साइज़ के साथ बढ़ी वह गलत दिखेगी, इसलिए इसे पिन करना सही है।

css
.card {
  border: 1px solid #ccc;      /* फॉन्ट साइज़ की परवाह किए बिना एक बालों जैसी सीमा रहती है */
  border-radius: 8px;
  padding: 1rem;               /* लेकिन आंतरिक इंटरनल प्रकार के साथ स्केल करता है */
}

नकारात्मक पक्ष पाठ को इसमें आकार न देने का कारण है। एक पाठक अपने ब्राउज़र में एक बड़ा डिफ़ॉल्ट फॉन्ट साइज़ सेट कर सकता है आराम या पहुँच के लिए, और px इसे ओवरराइड करता है: एक font-size: 18px शीर्षक 18 पिक्सेल पर प्रस्तुत होता है चाहे उनका डिफ़ॉल्ट 16 या 24 हो। तो पाठक के निश्चित विवरण के लिए px का उपयोग करें और किसी भी चीज़ के लिए एक फॉन्ट-सापेक्ष इकाई में स्विच करें जिसे पाठक की सेटिंग को सम्मानित करना चाहिए, जो अगला भाग कवर करता है।

CSS px एक भौतिक डिवाइस पिक्सेल नहीं है; यह एक संदर्भ पिक्सेल है, एक कोणीय इकाई जो ब्राउज़र स्केल करता है ताकि 1px स्क्रीन घनत्व में सुसंगत दृष्टि आकार पर पढ़ा जाए। उच्च-घनत्व प्रदर्शन पर, एक CSS पिक्सेल कई डिवाइस पिक्सेल के लिए मानचित्र करता है, जो है कि क्यों एक 1px सीमा एक साफ बालों जैसी रहती है बजाय गायब होने के। यह दृढ़ता px को चीजों के लिए सही पसंद बनाती है जो पाठक के फॉन्ट साइज़ को ट्रैक नहीं करने चाहिए: सीमाएँ, 1px विभाजक, छोटे त्रिज्या, box-shadow ऑफ़सेट, और बालों की पतली विस्तार।

css
.card {
  border: 1px solid #ccc;      /* निश्चित बालों जैसी; इसे स्केल करना गलत दिखेगा */
  border-radius: 8px;
  padding: 1rem;               /* आंतरिक इंटरनल प्रकार की जगह ट्रैक करता है */
}

विफलता का तरीका पाठ को px में आकार देना है। font-size को पिक्सेल में सेट करना पाठक के डिफ़ॉल्ट फॉन्ट साइज़ को ओवरराइड करता है, वह आधार आकार जो वे ब्राउज़र वरीयताओं में सेट कर सकते हैं (अक्सर कम दृष्टि के लिए), क्योंकि एक px मान के पास उस वरीयता को स्केल करने के लिए कोई संदर्भ नहीं है। ध्यान दें पूर्ण-पृष्ठ ज़ूम से अंतर: आधुनिक ब्राउज़र पूर्ण-पृष्ठ ज़ूम पर px को स्केल करते हैं, इसलिए पुरानी "px ज़ूम को अनदेखा करता है" दावा पुरानी है, लेकिन एक px फॉन्ट साइज़ विशेष रूप से डिफ़ॉल्ट-फॉन्ट-साइज़ सेटिंग को अनदेखा करता है, और वह सेटिंग वह पहुँच मार्ग है जिसे कई पाठक पर निर्भर करते हैं। नियम जो खड़ा होता है: px निश्चित विस्तार के लिए, एक फॉन्ट-सापेक्ष इकाई किसी भी चीज़ के लिए जिसे एक पाठक बढ़ा सकता है, विशेष रूप से बॉडी पाठ और टाइपोग्राफी

Junoपिक्सेल और जब वे ठीक हैं एक पिक्सेल (px) एक निश्चित आकार है, इसलिए 16px हमेशा 16px होता है। जो यह छोटी चीजों के लिए एक अच्छा फिट है जो जगह पर रहनी चाहिए, जैसे एक 1px सीमा या एक छोटा गोल कोना। ट्रेड-ऑफ़ यह है कि px एक पाठक को अनदेखा करता है जिन्होंने बड़े पाठ सेट किया है, इसलिए यह पृष्ठ पर शब्दों के लिए इकाई नहीं है।
Junoपिक्सेल और जब वे ठीक हैंpx का उपयोग करें जब एक लंबाई स्केल नहीं करनी चाहिए: सीमाएँ, बाल विभाजक, छोटे त्रिज्या। इसकी दृढ़ता वहाँ विशेषता है। नकारात्मक पक्ष पाठ के साथ दिखाई देता है, जहाँ एक px फॉन्ट साइज़ एक पाठक के बड़े डिफ़ॉल्ट को ओवरराइड करता है, इसलिए निश्चित विवरण के लिए px रखें और पाठ को एक फॉन्ट-सापेक्ष इकाई में आकार दें।
Junoपिक्सेल और जब वे ठीक हैं CSS px एक संदर्भ पिक्सेल है जो ब्राउज़र स्क्रीन घनत्व में दृष्टि से सुसंगत रखता है, जो है कि क्यों एक 1px सीमा एक साफ बालों जैसी रहती है। यह सीमाओं और छायाओं जैसे निश्चित विस्तार के लिए सही है। यह पाठ के लिए गलत है, क्योंकि एक px फॉन्ट साइज़ पाठक के डिफ़ॉल्ट-फॉन्ट-साइज़ सेटिंग को अनदेखा करता है, इसलिए प्रकार को rem में आकार दें।

em और rem

दो सापेक्ष इकाइयाँ एक फॉन्ट साइज़ के लिए स्केल करती हैं: em और rem। वह जिसके लिए पहुँचें rem है। यह पृष्ठ के रूट फॉन्ट साइज़ के विरुद्ध मापता है, जो पूरे दस्तावेज़ पर सेट किया गया आधार पाठ साइज़ है (डिफ़ॉल्ट रूप से 16px)। तो 1rem 16px है, 1.5rem 24px है, और 2rem 32px है।

css
h1 {
  font-size: 2rem;             /* 2 x 16px = 32px */
}
p {
  font-size: 1rem;             /* 16px, आधार आकार */
  margin-bottom: 1.5rem;       /* 24px नीचे की ओर स्पेस */
}

क्योंकि rem उस एक रूट साइज़ के लिए बाँधा गया है, यह अनुमानित है: 1.5rem पृष्ठ पर हर जगह एक ही चीज़ का मतलब है। और जब कोई पाठक अपना डिफ़ॉल्ट पाठ साइज़ बढ़ाता है, तो rem में आकार की गई सब कुछ एक साथ बढ़ता है। दूसरी इकाई, em, तत्व के अपने फॉन्ट साइज़ के विरुद्ध स्केल करता है, जो उलझ सकता है, इसलिए rem से शुरु करें और आप शायद ही कभी पकड़े जाएँ।

em और rem दोनों फॉन्ट-सापेक्ष हैं, और अंतर यह है कि वे किस फॉन्ट साइज़ के विरुद्ध मापते हैं। rem रूट फॉन्ट साइज़ के सापेक्ष है, <html> तत्व पर सेट किया गया आकार (डिफ़ॉल्ट रूप से 16px), इसलिए 1.5rem पृष्ठ पर कहीं भी समान लंबाई में हल करता है। em तत्व के अपने फॉन्ट साइज़ के सापेक्ष है, इसलिए इसका मान इस बात पर निर्भर करता है कि आप इसे कहाँ उपयोग करते हैं।

css
h1 {
  font-size: 2rem;             /* हमेशा 2 x रूट = 32px */
}
.card {
  font-size: 1.125rem;         /* 18px */
  padding: 1em;                /* 1 x इस तत्व का 18px = 18px */
}

सिफारिश rem में आकार देना है और em का उपयोग करना है केवल स्थानीय फॉन्ट साइज़ के लिए बाँधी गई स्केलिंग के लिए। em उन चीजों के लिए अच्छी तरह से काम करता है जो अपने पाठ को ट्रैक करनी चाहिए, जैसे एक बटन के अंदर पैडिंग जो बटन के फॉन्ट साइज़ के साथ बढ़ता है। लेकिन em नेस्टेड तत्वों के माध्यम से संयोजित होता है, जो लोगों को आश्चर्यचकित करता है, इसलिए इसे उन स्थानीय मामलों के लिए रखें और rem को अपने सामान्य आकार और टाइपोग्राफी को ले जाने दें।

em और rem दोनों फॉन्ट-सापेक्ष हैं, मतलब वे एक फॉन्ट साइज़ के विरुद्ध हल करते हैं निश्चित लंबाई नहीं, और अंतर संदर्भ है। rem (रूट em) रूट फॉन्ट साइज़ के विरुद्ध हल करता है, font-size <html> तत्व पर गणना की गई, इसलिए यह एक एकल वैश्विक संदर्भ है: 1.25rem एक शीर्षक, एक पाद लेख, या छह स्तर गहराई में समान गणना की गई लंबाई है। em वर्तमान तत्व के font-size के विरुद्ध हल करता है, इसलिए इसका अर्थ स्थानीय है और संदर्भ के साथ चलता है।

यह स्थानीय संदर्भ है जहाँ em संयोजित होता है। क्योंकि एक बच्चे का em इसके अपने font-size के विरुद्ध मापा जाता है, और font-size स्वयं विरासत में मिलता है, नेस्टेड तत्वों पर font-size को em में सेट करना हर स्तर पर गुणा करता है:

css
/* हर सूची स्तर em में font-size सेट करता है, इसलिए आकार गुणनात्मक रूप से स्टैक करते हैं */
ul { font-size: 0.9em; }       /* 0.9 x माता-पिता */

/* एक 16px रूट बन जाता है:
   गहराई 1 -> 14.4px
   गहराई 2 -> 12.96px  (0.9 x 0.9)
   गहराई 3 -> 11.66px  (0.9 x 0.9 x 0.9)  */

किसी ने पाठ नहीं माँगा जो यह सिकुड़ता है जितना गहरा यह नेस्ट करता है; यह em संयोजन है, और यह डिफ़ॉल्ट रूप से rem के लिए पहुँचने का मुख्य तर्क है। ट्रेड-ऑफ़ घटक-स्थानीय स्केलिंग के लिए दूसरे तरीके से चलता है, जहाँ आप चाहते हैं कि एक मान एक तत्व के अपने प्रकार को ट्रैक करे: एक बटन जिसकी पैडिंग 0.75em है और border-radius 0.5em है जब आप इसका font-size बढ़ाते हैं तो एक इकाई के रूप में पुनः स्केल करता है, जो rem नहीं कर सकता क्योंकि यह स्थानीय आकार को अनदेखा करता है। तो काम करने वाला विभाजन rem है किसी भी चीज़ के लिए जो रूट के विरुद्ध स्थिर रहनी चाहिए, em दूरी और त्रिज्या के लिए जो उनके अपने तत्व के फॉन्ट साइज़ के साथ स्केल करनी चाहिए।

द्रव आकार के लिए, min(), max(), और clamp() एक लंबाई को सीमाओं के बीच लचीला करते हैं। min(a, b) वर्तमान व्यूपोर्ट पर जो छोटा है उसे चुनता है, max(a, b) बड़ा है, और clamp(min, preferred, max) एक पसंदीदा मान एक फर्श और छत के बीच रखता है। एक शीर्षक के लिए सामान्य पैटर्न font-size: clamp(1.75rem, 4vw, 3rem) है: यह व्यूपोर्ट के साथ स्केल करता है (4vw) लेकिन 1.75rem से नीचे नहीं गिरता है या 3rem से अधिक है, इसलिए प्रकार एक स्टैक ब्रेकपॉइंट्स के बिना द्रव रहता है। प्रकार को rem (या rem-बाउंडेड clamp()) में आकार देना उपयोगकर्ता ज़ूम और पाठक के डिफ़ॉल्ट फॉन्ट साइज़ को भी सम्मानित करता है, क्योंकि वे rem को हल करने वाले रूट को समायोजित करते हैं, जबकि एक कच्चा vw मान केवल व्यूपोर्ट को ट्रैक करता है और पाठक की फॉन्ट प्राथमिकता को अनदेखा करता है। यह है कि क्यों clamp() में rem फर्श और छत महत्वपूर्ण हैं: वे अभिव्यक्ति में सुलभ संदर्भ रखते हैं।

Junoem और remrem और em दोनों एक फॉन्ट साइज़ के लिए स्केल करते हैं, और शुरुआत करने वाला rem है। यह पृष्ठ के रूट साइज़ के विरुद्ध मापता है, जो डिफ़ॉल्ट रूप से 16px है, इसलिए 1.5rem 24px है और हर जगह एक ही चीज़ का मतलब है। em तत्व के अपने फॉन्ट साइज़ के विरुद्ध स्केल करता है, जो उलझ सकता है, इसलिए पहले rem के लिए पहुँचें।
Junoem और rem दोनों फॉन्ट-सापेक्ष हैं: rem रूट फॉन्ट साइज़ के विरुद्ध मापते हैं, इसलिए यह हर जगह स्थिर है, जबकि em तत्व के अपने फॉन्ट साइज़ के विरुद्ध मापते हैं, इसलिए यह संदर्भ के साथ बदलता है और नेस्ट किए जाने पर संयोजित होता है। डिफ़ॉल्ट रूप से rem में आकार दें और दूरी के लिए em रखें जो इसके अपने तत्व के प्रकार को ट्रैक करनी चाहिए, जैसे एक बटन के अंदर पैडिंग।
Junoem और remrem रूट फॉन्ट साइज़ के लिए एक स्थिर संदर्भ के लिए लंगर डालता है; em तत्व के अपने आकार के लिए लंगर डालता है और नेस्टिंग के माध्यम से गुणा करता है, जो है कि क्यों गहराई से नेस्टेड em फॉन्ट साइज़ बहाव। सामान्य आकार के लिए rem का उपयोग करें और घटक-स्थानीय स्केलिंग के लिए em का उपयोग करें जो इसके अपने प्रकार का पालन करना चाहिए। द्रव प्रकार के लिए, clamp(1.75rem, 4vw, 3rem) व्यूपोर्ट के साथ लचीला है जबकि rem फर्श और छत उपयोगकर्ता ज़ूम और फॉन्ट सेटिंग को सम्मानित करते हैं।

प्रतिशत

एक प्रतिशत (%) एक तत्व को इसके माता-पिता के विरुद्ध आकार देता है। चौड़ाई के लिए, width: 50% का अर्थ है जिस बॉक्स के अंदर तत्व बैठता है उसकी चौड़ाई का आधा, जो भी चौड़ाई हो।

css
.sidebar {
  width: 25%;                  /* माता-पिता की चौड़ाई का एक चौथाई */
}
.content {
  width: 75%;                  /* बाकी तीन चौथाई */
}

यह वह है जो एक लेआउट को द्रव बनाता है: क्योंकि चौड़ाई माता-पिता के अंश हैं, वे सिकुड़ते हैं और माता-पिता के रूप में बढ़ते हैं। खिड़की को पुनः आकार दें और एक 50% कॉलम आधी चौड़ाई रहता है बजाय एक निश्चित 500px कॉलम के तरीके में फैलने के। यह लचीलापन है कि क्यों प्रतिशत प्रतिक्रियाशील डिज़ाइन में अक्सर दिखाई देते हैं।

एक प्रतिशत माता-पिता पर एक संदर्भ के विरुद्ध हल करता है, और width के लिए वह संदर्भ माता-पिता की सामग्री चौड़ाई है। तो width: 50% आपको वर्तमान में जो कुछ भी युक्त बॉक्स है उसका आधा देता है, जो प्रतिशत-आधारित कॉलम को द्रव बनाता है: वे माता-पिता के रूप में ट्रैक करते हैं जो पुनः आकार देते हैं।

css
.container {
  width: 90%;                  /* इसके माता-पिता का 90%, नीचे एक कप तक */
  max-width: 60rem;            /* चौड़ी स्क्रीन पर 60rem से अधिक बढ़ना बंद करो */
  margin: 0 auto;              /* इसे केंद्र करो */
}

संदर्भ हमेशा चौड़ाई नहीं है, और यह लोगों को ट्रिप करता है। एक प्रतिशत padding या margin, यहाँ तक कि ऊर्ध्वाधर वाले, माता-पिता की चौड़ाई के विरुद्ध हल करते हैं, इसकी ऊँचाई नहीं। एक प्रतिशत height माता-पिता की ऊँचाई के विरुद्ध हल करता है, लेकिन केवल अगर माता-पिता के पास मापने के लिए एक निश्चित ऊँचाई है, अन्यथा हल करने के लिए कुछ नहीं है और इसे अनदेखा किया जाता है। एक प्रतिशत चौड़ाई को rem में max-width के साथ जोड़ना, जैसा कि ऊपर है, सामान्य कदम है: एक बिंदु तक द्रव, फिर सीमित इसलिए पंक्तियाँ पढ़ने के लिए बहुत चौड़ी नहीं फैलती हैं।

एक प्रतिशत सापेक्ष है, लेकिन rem और em के विपरीत इसका संदर्भ एक फॉन्ट साइज़ नहीं है, यह युक्त ब्लॉक का एक आयाम है (जो बॉक्स एक स्थित या इन-फ्लो तत्व के लिए संदर्भ स्थापित करता है, आमतौर पर माता-पिता का सामग्री बॉक्स)। पकड़ है कि संदर्भ आयाम संपत्ति-विशिष्ट है, और हमेशा नहीं जो आप अपेक्षा करते हैं:

css
.hero {
  width: 80%;                  /* 80% युक्त ब्लॉक की चौड़ाई */
  padding-top: 25%;            /* ऊँचाई नहीं, चौड़ाई का भी 25% */
  margin-bottom: 10%;          /* चौड़ाई फिर, यहाँ तक कि यह ऊर्ध्वाधर है */
}

width, padding, और margin प्रतिशत सभी युक्त ब्लॉक की चौड़ाई के विरुद्ध हल करते हैं, ऊर्ध्वाधर पैडिंग और मार्जिन सहित। यह चौड़ाई-आधारित ऊर्ध्वाधर पैडिंग एक quink के लिए जाने के लिए कुछ नहीं है; यह निश्चित पहलू-अनुपात बॉक्स के लिए क्लासिक ट्रिक है aspect-ratio भेज दिया, क्योंकि padding-top: 56.25% एक 16:9 क्षेत्र देता है जो चौड़ाई के साथ स्केल करता है। एक height प्रतिशत युक्त ब्लॉक की ऊँचाई के विरुद्ध हल करता है, लेकिन केवल अगर वह ऊँचाई निश्चित है (स्पष्ट रूप से सेट या अन्यथा हल करने योग्य); एक ऑटो ऊँचाई के विरुद्ध यह auto के लिए गणना करता है और कुछ भी नहीं करने के लिए प्रकट होता है, जो सामान्य कारण है कि एक प्रतिशत ऊँचाई मौन रूप से विफल हो जाता है। आधुनिक लेआउट में, flex-basis और ग्रिड ट्रैक प्रतिशत अधिक अनुमानित व्यवहार करते हैं, इसलिए प्रतिशत द्रव चौड़ाई के लिए उपयोगी रहते हैं जबकि fr इकाइयाँ और min()/max()/clamp() उन मामलों को कवर करते हैं प्रतिशत अजीब तरीके से संभालते हैं।

Junoप्रतिशत एक प्रतिशत माता-पिता के विरुद्ध आकार देता है, इसलिए width: 50% जिस बॉक्स के अंदर तत्व बैठता है उसकी चौड़ाई का आधा है। यह कॉलम को द्रव बनाता है: खिड़की को पुनः आकार दें और वे फैलते और सिकुड़ते हैं बजाय फैलने के। यह लेआउट के पीछे मुख्य उपकरणों में से एक है जो किसी भी स्क्रीन के लिए फिट होते हैं।
Junoप्रतिशत एक प्रतिशत चौड़ाई माता-पिता का एक अंश है, जो कॉलम को द्रव रखता है जब कंटेनर पुनः आकार देता है। संदर्भ देखें: प्रतिशत पैडिंग और मार्जिन माता-पिता की चौड़ाई के विरुद्ध हल करते हैं, यहाँ तक कि ऊर्ध्वाधर भी, और एक प्रतिशत ऊँचाई को माता-पिता को एक निश्चित ऊँचाई की आवश्यकता है। एक प्रतिशत चौड़ाई को rem में max-width के साथ जोड़ना इसे द्रव लेकिन सीमित रखता है।
Junoप्रतिशत प्रतिशत युक्त ब्लॉक के विरुद्ध हल करते हैं, और संदर्भ संपत्ति-विशिष्ट है: width, padding, और margin सभी इसकी चौड़ाई का उपयोग करते हैं, ऊर्ध्वाधर मान सहित, जो चौड़ाई-आधारित पहलू-अनुपात बॉक्स के पीछे ट्रिक है। एक प्रतिशत ऊँचाई को माता-पिता की निश्चित ऊँचाई की आवश्यकता है या यह auto के लिए गणना करता है और कुछ भी नहीं करता है। द्रव चौड़ाई के लिए प्रतिशत रखें और fr इकाइयाँ और clamp() को अजीब मामलों को संभालने दें।

व्यूपोर्ट इकाइयाँ

व्यूपोर्ट इकाइयाँ ब्राउज़र विंडो के विरुद्ध आकार देती हैं। vw व्यूपोर्ट चौड़ाई का एक प्रतिशत है और vh व्यूपोर्ट ऊँचाई का एक प्रतिशत है, जहाँ व्यूपोर्ट पृष्ठ का दृश्यमान क्षेत्र है। तो 100vw विंडो की पूरी चौड़ाई है और 100vh इसकी पूरी ऊँचाई है।

css
.hero {
  height: 100vh;               /* पूरी स्क्रीन ऊँचाई भरता है */
}

यह एक पूर्ण-स्क्रीन अनुभाग के लिए जाना जाता है, जैसे एक लैंडिंग बैनर जो किसी भी आकार की विंडो को भरना चाहिए। क्योंकि इकाइयाँ विंडो को ट्रैक करती हैं, अनुभाग पूर्ण-स्क्रीन रहता है जब कोई पुनः आकार देता है या अपना उपकरण घुमाता है, एक निश्चित पिक्सेल ऊँचाई सेट किए बिना जो केवल एक स्क्रीन पर सही होगी।

व्यूपोर्ट इकाइयाँ व्यूपोर्ट के विरुद्ध मापी जाती हैं, ब्राउज़र विंडो का दृश्यमान क्षेत्र। vw व्यूपोर्ट चौड़ाई का एक प्रतिशत है और vh इसकी ऊँचाई का एक प्रतिशत है, इसलिए 100vh एक पूरी विंडो की ऊँचाई है और 50vw इसकी आधी चौड़ाई है। वे पूर्ण-स्क्रीन अनुभाग और हीरो बैनर के लिए प्राकृतिक फिट हैं जो किसी भी आकार पर विंडो भरना चाहिए।

css
.hero {
  min-height: 100vh;           /* कम से कम एक पूरी स्क्रीन लंबी */
  padding: 2rem;
}

मोबाइल पर जानने के लिए एक चीज़: 100vh ऐतिहासिक रूप से ब्राउज़र के पते की पट्टी के पीछे की जगह को शामिल करता है, इसलिए एक पूर्ण-ऊँचाई अनुभाग दृश्यमान क्षेत्र के बजाय बैठ सकता है और निचले भाग में कट सकता है। फिक्स dvh है, गतिशील व्यूपोर्ट ऊँचाई, जो वास्तविक दृश्यमान ऊँचाई को ट्रैक करता है जब ब्राउज़र क्रोम दिखाता है और छिपाता है। मोबाइल पूर्ण-स्क्रीन अनुभाग पर min-height: 100dvh के लिए पहुँचें, और ध्यान दें कि फॉन्ट साइज़ पर कच्चा vw पाठक की फॉन्ट सेटिंग को अनदेखा करता है, इसलिए व्यूपोर्ट इकाइयों को लेआउट के लिए रखें प्रकार नहीं।

व्यूपोर्ट इकाइयाँ व्यूपोर्ट के विरुद्ध हल करती हैं, ब्राउज़र विंडो का दृश्यमान रेंडरिंग क्षेत्र। vw और vh इसकी चौड़ाई और ऊँचाई का एक प्रतिशत हैं; vmin और vmax दोनों के छोटे और बड़े का एक प्रतिशत हैं, अभिविन्यास के लिए प्रतिक्रिया करने वाले मानों के लिए काम आता है। उनका संदर्भ विंडो है, किसी भी माता-पिता नहीं, इसलिए वे पूर्ण-व्यूपोर्ट अनुभाग के लिए सही उपकरण हैं उनके चारों ओर लेआउट से स्वतंत्र।

css
.hero {
  min-height: 100dvh;          /* पूरी दृश्यमान ऊँचाई, मोबाइल-सुरक्षित */
  padding: 2rem;
}

तीव्र किनारा मोबाइल है, जहाँ व्यूपोर्ट ऊँचाई एक संख्या नहीं है। ब्राउज़र के पते की पट्टी और टूलबार विस्तार करते हैं और सिकुड़ते हैं जैसा कि उपयोगकर्ता स्क्रॉल करता है, इसलिए 100vh सबसे बड़ा संभावित व्यूपोर्ट के लिए पिन किया गया था और एक पूर्ण-ऊँचाई अनुभाग क्रोम के पीछे ओवरफ्लो करेगा। CSS अब तीन को उजागर करता है: svh (छोटी व्यूपोर्ट ऊँचाई, क्रोम विस्तृत), lvh (बड़ी, क्रोम संकुचित), और dvh (गतिशील, जो वर्तमान स्थिति को जीवंत रूप से अनुसरण करता है)। पूर्ण-स्क्रीन अनुभाग के लिए dvh का उपयोग करें जो दृश्यमान क्षेत्र के अनुरूप होना चाहिए, यह स्वीकार करते हुए कि यह पुनः प्रवाहित होता है जब पट्टियाँ चलती हैं। अन्य जाल कच्चे vw में font-size है: क्योंकि व्यूपोर्ट इकाई का संदर्भ विंडो है और रूट फॉन्ट साइज़ नहीं, font-size: 4vw पाठक के डिफ़ॉल्ट फॉन्ट साइज़ और पृष्ठ ज़ूम दोनों को अनदेखा करता है जो व्यूपोर्ट को नहीं बदलता, जो एक px फॉन्ट साइज़ के समान पहुँच परीक्षा को विफल करता है। फिक्स को बाउंड करना है: clamp(1rem, 4vw + 0.5rem, 2rem) द्रव व्यवहार रखता है जबकि rem शर्तें पाठक की सेटिंग स्थानांतरित कर सकने के लिए एक संदर्भ को पुनः स्थापित करती हैं।

Junoव्यूपोर्ट इकाइयाँvw और vh ब्राउज़र विंडो के विरुद्ध आकार देते हैं: 100vw इसकी पूरी चौड़ाई है और 100vh इसकी पूरी ऊँचाई है। वे एक पूर्ण-स्क्रीन अनुभाग जैसे एक लैंडिंग बैनर के लिए जाना जाता है, क्योंकि यह पूर्ण-स्क्रीन रहता है जब विंडो पुनः आकार देता है बजाय एक पिक्सेल ऊँचाई के लिए लॉक किया जाए।
Junoव्यूपोर्ट इकाइयाँvw और vh विंडो की चौड़ाई और ऊँचाई का एक प्रतिशत हैं, जो हीरो अनुभाग के लिए सही है जो किसी भी आकार पर स्क्रीन भरना चाहिए। मोबाइल पर, 100vh पते की पट्टी के पीछे दृश्यमान क्षेत्र से अधिक हो सकता है, इसलिए वहाँ dvh के लिए पहुँचें। व्यूपोर्ट इकाइयों को लेआउट के लिए रखें, फॉन्ट साइज़ नहीं, क्योंकि कच्चा vw प्रकार पाठक की सेटिंग को अनदेखा करता है।
Junoव्यूपोर्ट इकाइयाँ व्यूपोर्ट इकाइयाँ विंडो के लिए लंगर डालती हैं, माता-पिता नहीं, इसलिए पूर्ण-व्यूपोर्ट अनुभाग के लिए उपयुक्त; vmin और vmax अभिविन्यास के लिए प्रतिक्रिया करते हैं। मोबाइल पर ऊँचाई एक मान नहीं है, इसलिए ब्राउज़र क्रोम चलते समय दृश्यमान क्षेत्र को अनुसरण करने के लिए dvh का उपयोग करें। कभी भी कच्चे vw में प्रकार को आकार न दें, क्योंकि यह पाठक की फॉन्ट सेटिंग को अनदेखा करता है; इसे rem शर्तों के साथ clamp() में बाउंड करें ताकि सुलभ संदर्भ अभिव्यक्ति में रहे।