'and', 'or', आणि 'not' सारख्या लॉजिकल ऑपरेटर्सचा वापर करून CSS कंटेनर क्वेरींच्या प्रगत क्षमतांचा शोध घ्या. अत्यंत प्रतिसादक आणि जुळवून घेणारे लेआउट्स कसे तयार करायचे ते शिका.
CSS कंटेनर क्वेरी लॉजिकल कॉम्बिनेशन्समध्ये प्राविण्य मिळवणे: क्वेरी लॉजिक ऑपरेटर्सची शक्ती मुक्त करणे
CSS कंटेनर क्वेरीज रिस्पॉन्सिव्ह वेब डिझाइनमधील एक महत्त्वपूर्ण उत्क्रांती दर्शवतात, ज्यामुळे डेव्हलपर्सना व्ह्यूपोर्टऐवजी त्यांच्या कंटेनिंग एलेमेंटच्या आकार किंवा स्थितीवर आधारित एलेमेंट्सना स्टाइल करण्याची परवानगी मिळते. मूलभूत कंटेनर क्वेरीज शक्तिशाली लवचिकता देतात, परंतु खरी क्षमता लॉजिकल ऑपरेटर्ससोबत एकत्र केल्यावर अनलॉक होते. हे सर्वसमावेशक मार्गदर्शक 'and', 'or', आणि 'not' कसे वापरायचे हे सखोलपणे समजावून सांगेल, ज्यामुळे कंटेनरच्या परिस्थितीला अचूक प्रतिसाद देणारे अत्याधुनिक, जुळवून घेणारे लेआउट्स तयार करता येतील.
CSS कंटेनर क्वेरीज काय आहेत? एक जलद पुनरावलोकन
लॉजिकल ऑपरेटर्समध्ये जाण्यापूर्वी, कंटेनर क्वेरीज काय आहेत आणि त्या का महत्त्वाच्या आहेत याचा पटकन आढावा घेऊया.
पारंपारिक मीडिया क्वेरीज व्ह्यूपोर्ट-आधारित असतात, म्हणजे त्या ब्राउझर विंडोच्या आकारावर प्रतिक्रिया देतात. याउलट, कंटेनर क्वेरीज तुम्हाला एका कंटेनिंग एलेमेंटच्या आकार किंवा स्थितीवर आधारित स्टाइल्स लागू करण्याची परवानगी देतात. यामुळे अधिक सूक्ष्म नियंत्रण मिळते आणि खऱ्या अर्थाने कंपोनेंट-आधारित रिस्पॉन्सिव्ह डिझाइन शक्य होते.
उदाहरणार्थ, तुमच्याकडे एक कार्ड कंपोनेंट असू शकतो जो माहिती प्रदर्शित करतो. कंटेनर क्वेरीजसह, तुम्ही पॅरेंट कंटेनरमधील त्याच्या रुंदीवर आधारित कार्डचे लेआउट समायोजित करू शकता. जर कार्ड पुरेसे रुंद असेल, तर ते माहिती एका ओळीत प्रदर्शित करू शकते; जर ते अरुंद असेल, तर ते एलेमेंट्स अनुलंब (vertically) स्टॅक करू शकते. यामुळे कार्ड पृष्ठावर कुठेही ठेवले तरी ते चांगले दिसते याची खात्री होते.
कंटेनर क्वेरीज वापरण्यासाठी, तुम्हाला प्रथम एका एलेमेंटवर कंटेनर कॉन्टेक्स्ट स्थापित करणे आवश्यक आहे. हे container-type प्रॉपर्टी वापरून केले जाते. दोन सर्वात सामान्य व्हॅल्यूज आहेत:
size: कंटेनर क्वेरी कंटेनरच्या रुंदी आणि उंची या दोन्हींवर प्रतिक्रिया देईल.inline-size: कंटेनर क्वेरी इनलाइन आकारावर (सामान्यतः आडव्या लेखन मोडमध्ये रुंदी) प्रतिक्रिया देईल.
तुम्ही तुमच्या कंटेनरला नाव देण्यासाठी container-name देखील वापरू शकता, जे तुम्हाला नेस्टेड कंटेनर कॉन्टेक्स्ट असल्यास विशिष्ट कंटेनरला लक्ष्य करण्याची परवानगी देते.
एकदा तुम्ही कंटेनर कॉन्टेक्स्ट स्थापित केल्यानंतर, तुम्ही काही अटी पूर्ण झाल्यावर लागू होणाऱ्या स्टाइल्स परिभाषित करण्यासाठी @container नियम वापरू शकता.
लॉजिकल ऑपरेटर्सची शक्ती: 'and', 'or', आणि 'not'
खरी जादू तेव्हा होते जेव्हा तुम्ही कंटेनर क्वेरीजला लॉजिकल ऑपरेटर्ससोबत जोडता. हे ऑपरेटर्स तुम्हाला विशिष्ट कंटेनर स्थितींना लक्ष्य करणाऱ्या जटिल अटी तयार करण्याची परवानगी देतात. चला प्रत्येक ऑपरेटरचा तपशीलवार शोध घेऊया.
'and' ऑपरेटर: एकाधिक अटींची आवश्यकता
and ऑपरेटर तुम्हाला अनेक अटी एकत्र करण्याची परवानगी देतो, ज्यासाठी स्टाइल्स लागू होण्यासाठी सर्व अटी पूर्ण होणे आवश्यक आहे. जेव्हा तुम्ही एकाच वेळी विशिष्ट आकार आणि स्थितीच्या निकषांची पूर्तता करणाऱ्या कंटेनरला लक्ष्य करू इच्छिता तेव्हा हे उपयुक्त आहे.
उदाहरण: समजा तुमच्याकडे एक कंटेनर आहे ज्याला तुम्ही 500px पेक्षा जास्त रुंद आणि एक विशिष्ट डेटा ॲट्रिब्यूट सेट असल्यास वेगळ्या पद्धतीने स्टाइल करू इच्छिता.
.card-container {
container-type: inline-size;
}
@container (min-width: 500px) and (data-theme="dark") {
.card {
background-color: #333;
color: #fff;
}
}
या उदाहरणात, .card ला गडद पार्श्वभूमी आणि पांढरा मजकूर फक्त तेव्हाच मिळेल जेव्हा .card-container किमान 500px रुंद असेल आणि त्यात data-theme ॲट्रिब्यूट "dark" वर सेट असेल. जर यापैकी कोणतीही अट पूर्ण झाली नाही, तर @container नियमातील स्टाइल्स लागू होणार नाहीत.
'and' साठी व्यावहारिक उपयोग:
- अटींवर आधारित लेआउट बदल: कंपोनेंटच्या रुंदी आणि विशिष्ट क्लास किंवा डेटा ॲट्रिब्यूटच्या उपस्थितीवर आधारित त्याचे लेआउट बदला (उदा., कंटेनर पुरेसा रुंद असल्यास आणि "featured" क्लास असल्यास सिंगल-कॉलममधून मल्टी-कॉलम लेआउटमध्ये बदलणे).
- थीम-विशिष्ट स्टाइलिंग: कंटेनरच्या थीम (उदा., गडद किंवा हलका मोड) आणि त्याच्या आकारावर आधारित भिन्न स्टाइल्स लागू करा.
- स्थिती-आधारित स्टाइलिंग: कंपोनेंटच्या आकारावर आणि तो विशिष्ट स्थितीत आहे की नाही यावर आधारित त्याचे स्वरूप समायोजित करा (उदा., "active", "disabled").
'or' ऑपरेटर: किमान एक अट पूर्ण करणे
or ऑपरेटर तुम्हाला निर्दिष्ट केलेल्या अटींपैकी किमान एक अट पूर्ण झाल्यास स्टाइल्स लागू करण्याची परवानगी देतो. जेव्हा तुम्ही वेगवेगळ्या आकाराच्या श्रेणींमध्ये येणाऱ्या किंवा वेगवेगळ्या स्थिती असलेल्या कंटेनरला लक्ष्य करू इच्छिता तेव्हा हे उपयुक्त आहे.
उदाहरण: समजा तुम्हाला एका कंटेनरवर एक विशिष्ट स्टाइल लागू करायची आहे जर तो 300px पेक्षा कमी रुंद असेल किंवा 800px पेक्षा जास्त रुंद असेल.
.card-container {
container-type: inline-size;
}
@container (max-width: 300px) or (min-width: 800px) {
.card {
padding: 1em;
border: 1px solid #ccc;
}
}
या उदाहरणात, .card ला 1em चे पॅडिंग आणि एक बॉर्डर मिळेल जर .card-container 300px पेक्षा कमी रुंद असेल किंवा 800px पेक्षा जास्त रुंद असेल. जर कंटेनरची रुंदी 300px आणि 800px (समावेशक) दरम्यान असेल, तर @container नियमातील स्टाइल्स लागू होणार नाहीत.
'or' साठी व्यावहारिक उपयोग:
- वेगवेगळ्या स्क्रीन आकारांना हाताळणे: कंपोनेंट लहान स्क्रीनवर (उदा., मोबाईल डिव्हाइस) किंवा मोठ्या स्क्रीनवर (उदा., डेस्कटॉप) प्रदर्शित झाला आहे की नाही यावर आधारित भिन्न स्टाइल्स लागू करा.
- पर्यायी लेआउट प्रदान करणे: कंपोनेंटला उपलब्ध जागेच्या प्रमाणावर अवलंबून भिन्न लेआउट्स ऑफर करा.
- एकाधिक थीम्सना समर्थन देणे: कंपोनेंटच्या वेगवेगळ्या थीम्स किंवा प्रकारांसाठी विशिष्ट स्टाइल्स लागू करा. उदाहरणार्थ, कंपोनेंटचा वापर "primary" किंवा "secondary" संदर्भात झाला आहे की नाही यावर आधारित त्याच्या आकार विचारात न घेता भिन्न स्टाइल्स असू शकतात.
'not' ऑपरेटर: विशिष्ट अटी वगळणे
not ऑपरेटर तुम्हाला विशिष्ट अट पूर्ण न झाल्यास स्टाइल्स लागू करण्याची परवानगी देतो. लॉजिक उलट करण्यासाठी किंवा विशिष्ट वैशिष्ट्य नसलेल्या कंटेनरला लक्ष्य करण्यासाठी हे उपयुक्त ठरू शकते.
उदाहरण: समजा तुम्हाला एका कंटेनरवर एक विशिष्ट स्टाइल लागू करायची आहे, जोपर्यंत त्याला "featured" क्लास नसेल.
.card-container {
container-type: inline-size;
}
@container not (.featured) {
.card {
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}
}
या उदाहरणात, .card ला बॉक्स शॅडो लागू होईल जोपर्यंत .card-container ला "featured" क्लास नसेल. जर कंटेनरला "featured" क्लास असेल, तर बॉक्स शॅडो लागू होणार नाही.
'not' साठी व्यावहारिक उपयोग:
- डीफॉल्ट स्टाइल्स लागू करणे: विशिष्ट क्लास किंवा ॲट्रिब्यूट नसलेल्या एलेमेंट्सना डीफॉल्ट स्टाइल्स लागू करण्यासाठी
notवापरा. यामुळे काही प्रकरणांमध्ये स्टाइल्स ओव्हरराइड करण्याची गरज टाळून तुमचे CSS सोपे होऊ शकते. - अटींवर आधारित लॉजिक उलट करणे: काहीवेळा काय नसावे यावर आधारित स्टाइल्स परिभाषित करणे सोपे असते.
notतुम्हाला तुमचे लॉजिक उलट करण्याची आणि विशिष्ट अट पूर्ण न करणाऱ्या एलेमेंट्सना लक्ष्य करण्याची परवानगी देतो. - अपवाद तयार करणे: सामान्य स्टाइलिंग नियमाला अपवाद तयार करण्यासाठी
notवापरा. उदाहरणार्थ, तुम्ही पृष्ठाच्या विशिष्ट विभागातील कंटेनर वगळता इतर सर्व कंटेनरना एक विशिष्ट स्टाइल लागू करू शकता.
जटिल अटींसाठी लॉजिकल ऑपरेटर्स एकत्र करणे
कंटेनर क्वेरी लॉजिकल ऑपरेटर्सची खरी शक्ती त्यांना एकत्र करून जटिल अटी तयार करण्यातून येते. तुम्ही जावास्क्रिप्ट किंवा इतर प्रोग्रामिंग भाषांप्रमाणे अटी गटबद्ध करण्यासाठी आणि मूल्यांकनाचा क्रम नियंत्रित करण्यासाठी कंसाचा (parentheses) वापर करू शकता.
उदाहरण: समजा तुम्हाला एका कंटेनरवर एक विशिष्ट स्टाइल लागू करायची आहे जर तो 600px पेक्षा जास्त रुंद असेल आणि त्याला "primary" क्लास असेल किंवा "secondary" क्लास नसेल.
.card-container {
container-type: inline-size;
}
@container (min-width: 600px) and (.primary or not(.secondary)) {
.card {
border: 2px solid blue;
}
}
या उदाहरणात, .card ला निळी बॉर्डर मिळेल जर खालील अटी पूर्ण झाल्या असतील तर:
.card-container600px पेक्षा जास्त रुंद आहे.- आणि यापैकी एक:
.card-containerला "primary" क्लास आहे.- किंवा
.card-containerला नाही "secondary" क्लास.
हे उदाहरण दर्शवते की तुम्ही एकत्रित लॉजिकल ऑपरेटर्स वापरून किती विशिष्ट आणि सूक्ष्म स्टाइलिंग नियम तयार करू शकता.
ऑपरेटर्स एकत्र करताना लक्षात ठेवण्यासारख्या गोष्टी:
- ऑपरेटर प्राधान्य (Precedence): कंस मूल्यांकनाचा क्रम नियंत्रित करण्यास मदत करतात, तरीही लॉजिकल ऑपरेटर्सचे डीफॉल्ट प्राधान्य समजून घेणे महत्त्वाचे आहे. CSS कंटेनर क्वेरीजमध्ये,
andलाorपेक्षा जास्त प्राधान्य आहे. याचा अर्थ(A or B) and CहेA or (B and C)पेक्षा वेगळे आहे. मूल्यांकनाचा क्रम स्पष्टपणे परिभाषित करण्यासाठी आणि संदिग्धता टाळण्यासाठी कंसाचा वापर करा. - वाचनक्षमता (Readability): जटिल अटी वाचायला आणि समजायला कठीण होऊ शकतात. वाचनक्षमता आणि देखभालक्षमता सुधारण्यासाठी जटिल अटींना कंसाचा आणि कमेंट्सचा वापर करून लहान, अधिक व्यवस्थापनीय भागांमध्ये विभाजित करा.
- चाचणी (Testing): तुमच्या कंटेनर क्वेरीज अपेक्षेप्रमाणे वागत आहेत याची खात्री करण्यासाठी वेगवेगळ्या कंटेनर आकार आणि स्थितींसह त्यांची कसून चाचणी करा. लागू केलेल्या स्टाइल्सची तपासणी करण्यासाठी आणि योग्य नियम लागू होत आहेत की नाही हे सत्यापित करण्यासाठी ब्राउझर डेव्हलपर टूल्सचा वापर करा.
वास्तविक-जगातील उदाहरणे आणि उपयोग
चला, कंटेनर क्वेरी लॉजिकल ऑपरेटर्सचा वापर करून तुम्ही जुळवून घेणारे आणि प्रतिसादक लेआउट्स कसे तयार करू शकता याची काही वास्तविक-जगातील उदाहरणे पाहूया.
उदाहरण १: एक लवचिक कार्ड कंपोनेंट
एका कार्ड कंपोनेंटचा विचार करा जो त्याच्या रुंदीनुसार वेगवेगळ्या प्रकारे माहिती प्रदर्शित करतो. आम्ही कार्डचे लेआउट आणि स्वरूप नियंत्रित करण्यासाठी लॉजिकल ऑपरेटर्ससह कंटेनर क्वेरीज वापरू शकतो.
.card-container {
container-type: inline-size;
width: 100%;
max-width: 800px; /* Example max-width */
margin: 0 auto;
}
.card {
display: flex;
flex-direction: column;
border: 1px solid #ccc;
padding: 1em;
}
.card img {
width: 100%;
max-width: 200px; /* Example max-width for the image */
margin-bottom: 1em;
}
/* Default styles for small containers */
@container (max-width: 400px) {
.card {
text-align: center;
}
.card img {
margin: 0 auto 1em;
}
}
/* Styles for medium containers */
@container (min-width: 401px) and (max-width: 600px) {
.card {
flex-direction: row;
align-items: center;
}
.card img {
margin: 0 1em 0 0;
}
.card > *:not(img) {
flex: 1;
}
}
/* Styles for large containers */
@container (min-width: 601px) {
.card {
flex-direction: row;
align-items: flex-start;
}
.card img {
margin: 0 1em 0 0;
}
.card > *:not(img) {
flex: 1;
}
}
या उदाहरणात:
- 400px किंवा त्यापेक्षा कमी रुंदीच्या कंटेनरसाठी, कार्ड एलेमेंट्स मध्यभागी (centered) आहेत.
- 401px आणि 600px रुंदीच्या दरम्यानच्या कंटेनरसाठी, प्रतिमा आणि मजकूर एका ओळीत प्रदर्शित केले जातात, ज्यात प्रतिमा डावीकडे असते.
- 600px पेक्षा जास्त रुंद असलेल्या कंटेनरसाठी, लेआउट मध्यम कंटेनरसारखेच राहते, परंतु आयटम्स सुरुवातीला संरेखित (align) होतात.
उदाहरण २: एक प्रतिसादक नेव्हिगेशन मेनू
दुसरे व्यावहारिक उदाहरण म्हणजे एक प्रतिसादक नेव्हिगेशन मेनू जो उपलब्ध जागेनुसार जुळवून घेतो. आम्ही कॉम्पॅक्ट, आयकॉन-आधारित मेनू आणि पूर्ण मजकूर-आधारित मेनूमध्ये स्विच करण्यासाठी कंटेनर क्वेरीज वापरू शकतो.
.nav-container {
container-type: inline-size;
background-color: #f0f0f0;
padding: 0.5em;
}
.nav-container ul {
list-style: none;
padding: 0;
margin: 0;
display: flex;
justify-content: space-around;
}
.nav-container li a {
text-decoration: none;
color: #333;
display: flex;
align-items: center;
padding: 0.5em;
}
.nav-container i {
font-size: 1.2em;
margin-right: 0.5em;
}
.nav-container span {
display: none; /* Hide text by default */
}
/* Styles for larger containers */
@container (min-width: 400px) {
.nav-container span {
display: inline; /* Show text for larger containers */
}
}
या उदाहरणात, नेव्हिगेशन मेनू आयटम्स सुरुवातीला फक्त आयकॉन प्रदर्शित करतात. जेव्हा कंटेनर 400px पेक्षा जास्त रुंद असतो, तेव्हा मजकूर लेबले आयकॉनसोबत प्रदर्शित होतात, ज्यामुळे अधिक वर्णनात्मक मेनू तयार होतो.
उदाहरण ३: आंतरराष्ट्रीयीकरण आणि मजकूर दिशा
मजकूर दिशेवर आधारित लेआउट्स जुळवून घेण्यासाठी कंटेनर क्वेरीज उपयुक्त ठरू शकतात. हे विशेषतः आंतरराष्ट्रीय वेबसाइट्ससाठी महत्त्वाचे आहे जे उजवीकडून डावीकडे (RTL) लिहिल्या जाणाऱ्या भाषांना समर्थन देतात, जसे की अरबी किंवा हिब्रू.
Article Title
Lorem ipsum dolor sit amet, consectetur adipiscing elit. ...
.article-container {
container-type: inline-size;
width: 100%;
max-width: 800px;
margin: 0 auto;
}
.article {
padding: 1em;
}
/* Default styles for LTR (Left-to-Right) */
.article h1 {
text-align: left;
}
/* Styles for RTL (Right-to-Left) */
@container (dir(rtl)) {
.article h1 {
text-align: right;
}
}
या उदाहरणात, dir(rtl) कंटेनर क्वेरी "rtl" वर सेट केलेल्या dir ॲट्रिब्यूटसह कंटेनरला लक्ष्य करते. जेव्हा मजकूर दिशा RTL असते, तेव्हा शीर्षक उजवीकडे संरेखित केले जाते. यामुळे लेआउट वेगवेगळ्या भाषा आणि लेखन प्रणालींसाठी योग्यरित्या जुळवून घेतले जाते याची खात्री होते.
कंटेनर क्वेरी लॉजिकल ऑपरेटर्स वापरण्यासाठी सर्वोत्तम पद्धती
कंटेनर क्वेरी लॉजिकल ऑपरेटर्सचा पुरेपूर फायदा घेण्यासाठी, खालील सर्वोत्तम पद्धती लक्षात ठेवा:
- साधेपणाने सुरुवात करा: मूलभूत कंटेनर क्वेरीजने सुरुवात करा आणि गरजेनुसार हळूहळू लॉजिकल ऑपरेटर्सचा परिचय करा. समजण्यास आणि सांभाळण्यास कठीण असलेल्या अत्यंत गुंतागुंतीच्या अटी तयार करणे टाळा.
- अर्थपूर्ण नावांचा वापर करा: तुमच्या कंटेनर क्वेरीज अधिक वाचनीय आणि स्वयं-दस्तऐवजीकरणीय बनवण्यासाठी वर्णनात्मक क्लास नावे आणि डेटा ॲट्रिब्यूट्सचा वापर करा.
- वाचनक्षमतेला प्राधान्य द्या: जटिल अटींची वाचनीयता सुधारण्यासाठी कंस आणि कमेंट्सचा वापर करा. लांब अटींना लहान, अधिक व्यवस्थापनीय भागांमध्ये विभाजित करा.
- कसून चाचणी करा: तुमच्या कंटेनर क्वेरीज अपेक्षेप्रमाणे वागत आहेत याची खात्री करण्यासाठी वेगवेगळ्या कंटेनर आकार आणि स्थितींसह त्यांची चाचणी करा. लागू केलेल्या स्टाइल्सची तपासणी करण्यासाठी आणि योग्य नियम लागू होत आहेत की नाही हे सत्यापित करण्यासाठी ब्राउझर डेव्हलपर टूल्सचा वापर करा.
- कार्यक्षमतेचा विचार करा: कंटेनर क्वेरीज सामान्यतः कार्यक्षम असल्या तरी, जटिल अटींमुळे कार्यक्षमतेवर संभाव्य परिणाम होऊ शकतो. अत्यंत गुंतागुंतीच्या अटी तयार करणे टाळा ज्यासाठी ब्राउझरला विस्तृत गणना करावी लागेल.
- प्रोग्रेसिव्ह एनहान्समेंट: कंटेनर क्वेरीजचा वापर प्रोग्रेसिव्ह एनहान्समेंट म्हणून करा. कार्यक्षमतेची मूलभूत पातळी सुनिश्चित करण्यासाठी कंटेनर क्वेरीजला समर्थन न देणाऱ्या ब्राउझरसाठी फॉलबॅक प्रदान करा.
- तुमचा कोड दस्तऐवजीकरण करा: तुमच्या कंटेनर क्वेरीज आणि त्यामागील लॉजिक स्पष्टपणे दस्तऐवजीकरण करा. यामुळे तुम्हाला आणि इतर डेव्हलपर्सना भविष्यात तुमचा कोड समजून घेणे आणि सांभाळणे सोपे होईल.
निष्कर्ष: कंटेनर क्वेरी लॉजिकच्या लवचिकतेचा स्वीकार
CSS कंटेनर क्वेरी लॉजिकल ऑपरेटर्स अत्यंत प्रतिसादक आणि जुळवून घेणारे लेआउट्स तयार करण्यासाठी एक शक्तिशाली टूलसेट प्रदान करतात. 'and', 'or', आणि 'not' एकत्र करून, तुम्ही विशिष्ट कंटेनर स्थितींना लक्ष्य करणाऱ्या आणि त्यानुसार स्टाइल्स लागू करणाऱ्या जटिल अटी तयार करू शकता. यामुळे तुमच्या लेआउट्सवर अधिक सूक्ष्म नियंत्रण मिळते आणि खऱ्या अर्थाने कंपोनेंट-आधारित रिस्पॉन्सिव्ह डिझाइन शक्य होते.
जसजसे कंटेनर क्वेरी समर्थन वाढत जाईल, तसतसे या तंत्रांमध्ये प्राविण्य मिळवणे फ्रंट-एंड डेव्हलपर्ससाठी अधिकाधिक महत्त्वाचे होईल. या मार्गदर्शकामध्ये नमूद केलेल्या सर्वोत्तम पद्धतींचे पालन करून आणि वेगवेगळ्या उपयोगांसह प्रयोग करून, तुम्ही कंटेनर क्वेरीजची पूर्ण क्षमता अनलॉक करू शकता आणि विविध डिव्हाइसेस आणि संदर्भांमध्ये अपवादात्मक वापरकर्ता अनुभव तयार करू शकता.
कंटेनर क्वेरी लॉजिकच्या लवचिकतेचा स्वीकार करा आणि तुमच्या रिस्पॉन्सिव्ह डिझाइन कौशल्यांना पुढील स्तरावर घेऊन जा!