कंटेनर की क्वेरी से जुड़ी केस स्टडी

Swetha Gopalakrishnan
Swetha Gopalakrishnan
Saurabh Rajpal
Saurabh Rajpal

कंटेनर क्वेरी प्रतिक्रियाशील के लिए एक बेहद गतिशील और लचीला अप्रोच ऑफ़र करते हैं. डिज़ाइन. कंटेनर क्वेरी, @container के नियम का इस्तेमाल करती हैं. यह इससे मिलते-जुलते @media वाली मीडिया क्वेरी का इस्तेमाल करता है. हालांकि, @container इसके बजाय पैरंट से क्वेरी करता है का इस्तेमाल करें.

कंटेनर क्वेरी, बेसलाइन नए उपलब्ध का हिस्सा हैं.

ब्राउज़र सहायता

  • Chrome: 105. अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
  • एज: 105. अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
  • Firefox: 110. अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
  • सफ़ारी: 16. अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है

सोर्स

कंटेनर के साइज़ के हिसाब से रिस्पॉन्स देकर, कंटेनर क्वेरी, कॉम्पोनेंट को ऑप्टिमाइज़ होने देती हैं की जगह बनाई जा सकती हैं. उदाहरण के लिए, कार्ड कॉम्पोनेंट, ऐप्लिकेशन में रखे गए कंटेनर के मुताबिक साइज़ और स्टाइल, चाहे वह साइडबार हो, हीरो हो सेक्शन या ग्रिड का इस्तेमाल करें.

जैसा कि नीचे दिए गए इलस्ट्रेशन में दिखाया गया है, मैक्रो के लिए मीडिया क्वेरी को जोड़ा जा सकता है लेआउट, माइक्रो लेआउट के लिए कंटेनर क्वेरी, उपयोगकर्ता की प्राथमिकता पर आधारित मीडिया के साथ क्वेरी का जवाब देने के लिए किया जा सकता है. मैसेज पढ़ा गया कंटेनर क्वेरी के बारे में ज़्यादा जानकारी और नया रिस्पॉन्सिव डिज़ाइन.

इमेज, जिसमें दिखाया गया है कि अलग-अलग तरह की स्टाइलिंग एक साथ कैसे काम करती हैं.
web.dev—नया रिस्पॉन्सिव.

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

redBus

RedBus अपने मोबाइल और डेस्कटॉप वर्शन के लिए अलग-अलग कोड का इस्तेमाल करता है और उसका इस्तेमाल करता है. कंटेनर क्वेरी को उनके क्या-क्या करें और कार्गो पेज, वे इस कोड को एक साथ जोड़ पाए थे इन साइटों के लिए एक ही कोड बेस में जोड़ा जा सकता है. इससे वे रिस्पॉन्सिव हो गए और सेव हो गए डेवलपमेंट का समय लगता है. इस उदाहरण में, कार्गो पेज का इस्तेमाल करके इसे दिखाया गया है:

कोड

नीचे दिए गए उदाहरण में, .bpdpCardWrapper पैरंट कंटेनर है. इसका नाम bpdpSection है.

अगर कंटेनर bpdpSection की चौड़ाई कम से कम 744 पिक्सल है, तो font-size और .bpdpCardContainer के ज़रिए चुने गए कॉम्पोनेंट के लिए line-height और .subTxt, .bpdpAddress अपडेट हो गया है.

//Code for Container Queries
.bpdpCardWrapper {
   container-type: inline-size;
   container-name: bpdpSection;
}
@container bpdpSection (min-width: 744px){
   .bpdpCardContainer{
      font-size: 1rem;
      line-height: 1.5rem;
   }

   .subTxt, .bpdpAddress{
       font-size: 0.875rem;
       line-height: 1.25rem;
   }
}

असर

पहले (एक से ज़्यादा कोड बेस) बाद में (एक कोड बेस)
इमारतें और निर्माण अलग इन्फ़्रास्ट्रक्चर (ज़्यादा कीमत). एक जैसा इन्फ़्रास्ट्रक्चर (कम लागत).
डिज़ाइन अलग यूज़र इंटरफ़ेस (यूआई), लेकिन एक जैसा काम नहीं करता. इसे हल करना चुनौती भरा है, लेकिन मुमकिन है.
परफ़ॉर्मेंस सिस्टम अलग-अलग होने की वजह से इसे आसानी से मैनेज किया जा सकता है. हालांकि, यह परफ़ॉर्मेंस को बेहतर बनाने की कोशिश का डुप्लीकेट है. यह पेज और सुविधा के लिए खास है, लेकिन RedBus का PageSpeedInsights स्कोर 80 से ज़्यादा है.
डेवलेपमेंट डेवलपर की अलग-अलग टीमें. समय में 30% - 40% की कमी.

Tokopedia

Tokopedia के प्रॉडक्ट की जानकारी वाले पेजों (पीडीपी) में प्रॉडक्ट जानकारी. पहले, इस पेज का लेआउट तीन में बांटा गया था कॉलम और कभी-कभी बाईं ओर मौजूद प्रॉडक्ट का नाम काटकर स्क्रीन का साइज़ (नीचे दिया गया "पहले" वाला वीडियो देखें).

लेआउट की इस समस्या को हल करने के लिए, उन्होंने आसानी से और तेज़ी से कंटेनर क्वेरी को अपनाया. इसके लागू होने के बाद, उन्हें एक लचीला लेआउट मिलता था, जहां प्रॉडक्ट का नाम हमेशा पूरी तरह से दिखता हो. इसके लिए, "बाद में" दिखने वाला यह वीडियो देखें).

पहले

कंटेनर क्वेरी लागू करने से पहले, "1 ओबेंग में ISKU 10" शब्द सातु.." ऊपर बाईं ओर मौजूद टेक्स्ट का एक हिस्सा छोटे स्क्रीन साइज़ के लिए कट जाएगा.

बाद में

कंटेनर क्वेरी को लागू करने से, लेआउट में बदलाव हो जाता है और टेक्स्ट, व्यूपोर्ट में रहता है.

कोड

यह कोड, infowrapper नाम के पैरंट कंटेनर के साइज़ के लिए क्वेरी करता है. अगर infowrapper की ज़्यादा से ज़्यादा चौड़ाई 360 पिक्सल है, तो चाइल्ड कॉम्पोनेंट width, margin,, और padding अडजस्ट किए गए हैं.

container-type को inline-size पर सेट करने पर, इनलाइन निर्देश के साइज़ के आधार पर क्वेरी की जाती है करते हैं. अंग्रेज़ी जैसी लैटिन भाषाओं में, पैरंट कंटेनर में सेव किया जाता है, क्योंकि टेक्स्ट बाईं से दाईं ओर इनलाइन होता है.

export const styCredibilityContainer = css`
  container-name: infowrapper;
  container-type: inline-size;
`;

export const styBtnShopFollow = css`
  margin-left: auto;
  width: 98px;
  @container infowrapper (max-width: 360px) {
    width: 100%;
    margin-top: 2px;
    margin-bottom: 8px;
    padding-left: 60px;
  }
`;

export const styBottomRow = css`
  margin-top: 4px;
  padding-left: 60px;
  display: flex;
  align-items: center;

  @container infowrapper (max-width: 360px) {
    padding-left: 0px;
  }

  > div {
    text-align: left;
    margin-top: 0 !important;
  }
`;

कंटेनर क्वेरी का इस्तेमाल करते समय इन बातों का ध्यान रखें

Tokopedia को अपने इस्तेमाल के उदाहरण की जानकारी, अपनी साइट पर टेक्स्ट एलिप्सिस को ढूंढने पर मिली. यह ऐसे कंटेनर दिखाता है जो बहुत छोटे हो सकते हैं. इसकी वजह से कॉन्टेंट कट सकता है उपयोगकर्ता के लिए बंद है.

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

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

रिसॉर्स:

इस सीरीज़ के अन्य लेख देखें. इनमें ई-कॉमर्स के बारे में बताया गया है कंपनियों को, सीएसएस और यूज़र इंटरफ़ेस (यूआई) की नई सुविधाओं, जैसे कि स्क्रोल की मदद से मिलने वाली सुविधाओं का इस्तेमाल करने का फ़ायदा मिला ऐनिमेशन, पॉपओवर, कंटेनर क्वेरी, और has() सिलेक्टर.