Kodokon kodokon.com

कंटेनर क्वेरी और CSS नेस्टिंग

अपने कंपोनेंट्स को व्यूपोर्ट के बजाय उनके कंटेनर के प्रति उत्तरदायी बनाएँ, और नेटिव नेस्टिंग के साथ अपनी स्टाइलशीट्स को संरचित करें।

10 मिनट · 3 प्रश्न

इस पाठ को Kodokon में खोलें

मीडिया क्वेरी व्यूपोर्ट को मापती है: एक कार्ड जो एक संकरी साइडबार और एक मुख्य ग्रिड दोनों में प्रदर्शित होता है, उनके साथ सही ढंग से अनुकूलित नहीं हो सकता, क्योंकि वही स्क्रीन चौड़ाई दो अलग-अलग संदर्भों से मेल खाती है। कंटेनर क्वेरी इस विघटन को हल करती है: कंपोनेंट अपने कंटेनर के आकार की क्वेरी करता है। पूर्वापेक्षा: container-type के साथ एक कंटेनर को स्पष्ट रूप से नामित करें (inline-size केवल क्षैतिज अक्ष को मापने के लिए, सामान्य मामला), वैकल्पिक रूप से container-name के ज़रिए नामित।

CSS
.sidebar {
  container-type: inline-size;
  container-name: sidebar;
}

@container sidebar (min-width: 400px) {
  .widget {
    display: grid;
    grid-template-columns: 80px 1fr;
    gap: 12px;
  }
}
एक विजेट जो अपने कॉलम के अनुसार अनुकूलित होता है, स्क्रीन के नहीं

कंटेनर इकाइयाँ तस्वीर को पूरा करती हैं: 1cqi क्वेरी किए गए कंटेनर के इनलाइन आकार के 1% के बराबर होता है (cqw, cqh, cqb, cqmin, cqmax भी मौजूद हैं)। clamp() के साथ संयुक्त होकर, वे प्रति कंपोनेंट द्रव टाइपोग्राफ़ी उत्पन्न करती हैं: वही कार्ड अपने कॉलम के अनुपात में शीर्षक पाता है, चाहे वह कहीं भी रखा गया हो।

CSS
.card-slot {
  container-type: inline-size;
}

.card h2 {
  font-size: clamp(1rem, 5cqi, 1.75rem);
}

@container (max-width: 300px) {
  .card .meta {
    display: none;
  }
}
cqi इकाइयाँ और बिना कंटेनर नाम वाली एक क्वेरी

नेटिव नेस्टिंग अंततः बिना किसी प्रीप्रोसेसर के नेस्टिंग लाती है। & सेलेक्टर पैरेंट संदर्भ को संदर्भित करता है; मीडिया क्वेरी और @container सीधे किसी नियम के भीतर नेस्ट होते हैं। Sass से एक महत्वपूर्ण अंतर: नेस्टेड पैरेंट को ऐसे माना जाता है मानो :is() में लपेटा गया हो। दो परिणाम: पैरेंट की विशिष्टता उसके सेलेक्टरों में से सबसे मज़बूत की होती है यदि वह एक सूची है, और & .child कोई स्ट्रिंग संयोजन नहीं करता - BEM नाम उत्पन्न करने के लिए Sass का &__element पैटर्न नेटिव रूप से मौजूद नहीं है।

CSS
.menu {
  display: flex;
  gap: 8px;

  & > li {
    list-style: none;

    &:hover {
      background: #f3f4f6;
    }
  }

  @media (min-width: 768px) {
    gap: 16px;
  }
}
नेटिव नेस्टिंग: स्थितियाँ, वंशज, और एक मीडिया क्वेरी

ज्ञान जांच

सुनिश्चित करें कि आपको इस पाठ के मुख्य बिंदु याद हैं।

  1. एक पुन: प्रयोज्य कार्ड के लिए मीडिया क्वेरी की तुलना में कंटेनर क्वेरी क्यों बेहतर है?
    • रेंडरिंग इंजन के लिए इसका मूल्यांकन करना तेज़ है
    • यह कार्ड के कंटेनर के आकार पर प्रतिक्रिया करता है, जो किसी भी स्क्रीन पर समान होता है जहाँ कॉलम संकरा है
    • यह किसी CSS पूर्वापेक्षा को घोषित किए बिना काम करता है
    • यह चौड़ाई के अलावा व्यूपोर्ट की ऊँचाई की भी क्वेरी कर सकता है
  2. 5cqi किसके अनुरूप है?
    • व्यूपोर्ट चौड़ाई का 5%
    • क्वेरी किए गए कंटेनर के इनलाइन आकार का 5%
    • कंटेनर के फ़ॉन्ट आकार का 5 गुना
  3. नेटिव नेस्टिंग Sass नेस्टिंग से किस प्रकार भिन्न है?
    • नेटिव नेस्टिंग किसी नियम के भीतर मीडिया क्वेरी नेस्ट करना निषिद्ध करती है
    • नेटिव नेस्टिंग पैरेंट को :is() में लपेटे हुए के रूप में मानती है और &__element-शैली के संयोजन की अनुमति नहीं देती
    • नेटिव नेस्टिंग को & प्रतीक को कंपाइल करने के लिए एक प्रीप्रोसेसर की आवश्यकता होती है
    • नेटिव नेस्टिंग नेस्टिंग को एकल स्तर तक सीमित करती है