प्रतिक्रियाशील डिजाइन

आप अपने लैपटॉप पर एक पेज बनाते हैं, यह सही दिखता है, और फिर कोई इसे फोन पर खोलता है। कॉलम जिन्हें आपने सावधानीपूर्वक संरेखित किया था वे अब एक संकीर्ण पट्टी में दबे हुए हैं, पाठ किनारे से बाहर चला जाता है, और एक क्षैतिज स्क्रॉलबार दिखाई देता है जहां कोई नहीं होना चाहिए। किसी ने साइट का एक अलग फोन संस्करण नहीं लिखा। एक ही पेज है, और इसे 380 पिक्सल फोन और 1400 पिक्सल मॉनिटर दोनों पर सही दिखना होगा, बिना आपके हर चीज़ की दो प्रतियां भेजे। यह अनुकूलनीयता प्रतिक्रियाशील डिजाइन है, और इसका अधिकांश हिस्सा उन उपकरणों से बना है जो आपके पास पहले से हैं।
प्रतिक्रियाशील का अर्थ और व्यूपोर्ट
एक प्रतिक्रियाशील पेज वह है जो किसी भी स्क्रीन पर अपने आप को फिर से आकार देता है। एक ही HTML और एक ही CSS फोन, टैबलेट और डेस्कटॉप पर काम करते हैं, और लेआउट समायोजित होता है ताकि कुछ भी ओवरफ्लो न हो और कुछ भी तंग न लगे। आप तीन साइटें नहीं बना रहे हैं। आप एक ऐसी साइट बना रहे हैं जो झुकती है।
इससे पहले कि कुछ भी काम करे, ब्राउज़र को HTML में एक निर्देश की आवश्यकता होती है। फोन पहले डेस्कटॉप-चौड़ाई का नाटक करते थे और पूरे पेज को फिट करने के लिए सिकोड़ते थे, यही कारण है कि पुरानी साइटें एक छोटे, ज़ूम-आउट किए गए गड़बड़ के रूप में दिखाई देती थीं। यह एक पंक्ति, जो आपके HTML के <head> में रहती है, फोन को अपनी वास्तविक चौड़ाई का उपयोग करने के लिए कहती है:
<meta name="viewport" content="width=device-width, initial-scale=1" />इसके बिना, आपका CSS एक काल्पनिक चौड़ी स्क्रीन को स्टाइल कर रहा है और आपका सावधानीपूर्वक तैयार किया गया लेआउट कभी एक मौका नहीं पाता।
पहले तरल लेआउट
आत्मवृत्ति एक भी फोन नियम नहीं लिखे ही विशेष फोन नियमों के लिए पहुंचना है, लेकिन बहुत सारी प्रतिक्रियाशीलता सीधे मुफ्त में आती है। यदि आप तरल मूल्यों के साथ बनाते हैं, जो स्थान के साथ फैलते और सिकुड़ते हैं, तो लेआउट पहले से ही अनुकूलित होता है।
दो आदतें इसका अधिकांश हिस्सा रखती हैं। चौड़ाई को प्रतिशत के रूप में सेट करें ताकि एक बॉक्स अपने कंटेनर का एक हिस्सा ले, न कि पिक्सल की एक निश्चित संख्या, और max-width का उपयोग करें ताकि कोई चीज़ एक छोटी स्क्रीन पर सिकुड़ सके लेकिन बड़ी स्क्रीन पर एक आरामदायक पढ़ने के आकार से कभी बड़ी न हो:
.container {
width: 90%; /* जो भी स्थान इसके पास है उसका 90% लेता है */
max-width: 60rem; /* लेकिन बड़ी स्क्रीन पर 60rem से कभी चौड़ा नहीं */
margin: 0 auto; /* केंद्रित */
}फोन पर यह कंटेनर एक संकीर्ण स्क्रीन का 90% है। मॉनिटर पर यह 60rem पर बढ़ना बंद कर देता है और केंद्रित बैठता है। आपने एक फोन नियम नहीं लिखा; मूल्यों ने अनुकूलन किया।
max-width ताकि वे फोन पर सिकुड़ें बिना मॉनिटर पर बहुत चौड़े हुए। ये दो मूल्य अपने आप लेआउट को अनुकूलित करते हैं। पहले तरल बनाएं, और आपको अगले आने वाले फोन-विशिष्ट नियमों की बहुत कम आवश्यकता होगी। मीडिया क्वेरीज़
कभी-कभी तरल मूल्य पर्याप्त नहीं होते हैं और आपको लेआउट को वास्तव में एक निश्चित आकार पर बदलने की आवश्यकता होती है, उदाहरण के लिए एक मेनू जो फोन पर लंबवत स्टैक होता है लेकिन डेस्कटॉप पर एक पंक्ति में बैठता है। यह मीडिया क्वेरी के लिए है: CSS का एक ब्लॉक जो केवल तब लागू होता है जब स्क्रीन एक शर्त को पूरा करता है जो आपने सेट की है।
छोटी स्क्रीन के लिए शैलियों के साथ शुरू करें जैसे कि आपका सामान्य CSS, फिर एक क्वेरी जोड़ें जो चौड़ी-स्क्रीन परिवर्तनों को परत करता है:
.nav {
display: flex;
flex-direction: column; /* छोटी स्क्रीन पर स्टैक किया गया */
}
@media (min-width: 40rem) {
.nav {
flex-direction: row; /* एक बार जब कमरा हो तो एक पंक्ति में */
}
}@media (min-width: 40rem) के अंदर नियम केवल तब चलता है जब स्क्रीन कम से कम 40rem चौड़ी हो। उसके नीचे, साधारण .nav नियम लागू होता है और मेनू स्टैक होता है।
@media (min-width: ...) का उपयोग करें। इस तरह फोन दृश्य आपका शुरुआती बिंदु है, पीछे की ओर पैच नहीं। ब्रेकपॉइंट चुनना
एक ब्रेकपॉइंट वह चौड़ाई है जहां मीडिया क्वेरी चलता है और लेआउट बदलता है। एक लुभावनी तरीका एक लोकप्रिय फोन या टैबलेट की चौड़ाई देखना और इससे मेल खाना है। यह जाल है। सैकड़ों डिवाइस आकार हैं, वे हर साल बदलते हैं, और उनका पीछा करना एक ऐसा खेल है जिसे आप नहीं जीत सकते।
बेहतर सवाल यह है: इस लेआउट को किस चौड़ाई पर खराब दिखने लगता है? अपने ब्राउज़र को धीरे-धीरे चौड़ा करें और देखें। जब पाठ की एक पंक्ति पढ़ने के लिए बहुत लंबी हो जाती है, या दो कॉलम बहुत संकीर्ण हो जाते हैं, वह है जहां ब्रेकपॉइंट है, चाहे कोई भी संख्या हो।
/* ब्रेकपॉइंट चुना गया क्योंकि यहां पाठ बहुत चौड़ा हो गया, */
/* न कि क्योंकि एक फोन इस आकार का होता है */
@media (min-width: 45rem) {
.article { max-width: 38rem; }
}
