CSS ग्रिड नेम्ड लाइन्स की शक्ति का अन्वेषण करें, उनके रेजोल्यूशन, लाइन रेफरेंस गणना और लचीले और रखरखाव योग्य लेआउट बनाने के लिए सर्वोत्तम प्रथाओं को समझें।
CSS ग्रिड नेम्ड लाइन रेजोल्यूशन को समझना: एक व्यापक गाइड
CSS ग्रिड लेआउट वेब डेवलपमेंट में जटिल और रिस्पॉन्सिव लेआउट बनाने के लिए एक शक्तिशाली उपकरण है। इसकी सबसे उपयोगी विशेषताओं में से एक ग्रिड लाइन्स को नाम देने की क्षमता है, जिससे अधिक सेमेंटिक और रखरखाव योग्य कोड की अनुमति मिलती है। हालांकि, यह समझना कि CSS ग्रिड इन नेम्ड लाइन्स को कैसे हल करता है, खासकर जब कई लाइन्स एक ही नाम साझा करती हैं, वांछित लेआउट प्राप्त करने के लिए महत्वपूर्ण है। यह व्यापक गाइड CSS ग्रिड नेम्ड लाइन रेजोल्यूशन, लाइन रेफरेंस गणना की जटिलताओं में गहराई से उतरेगा और आपको इस आवश्यक अवधारणा में महारत हासिल करने में मदद करने के लिए व्यावहारिक उदाहरण प्रदान करेगा।
नेम्ड ग्रिड लाइन्स क्या हैं?
CSS ग्रिड में, ग्रिड लाइन्स क्षैतिज और ऊर्ध्वाधर रेखाएं होती हैं जो ग्रिड की संरचना को परिभाषित करती हैं। डिफ़ॉल्ट रूप से, इन लाइनों को उनके संख्यात्मक सूचकांक से संदर्भित किया जाता है, जो 1 से शुरू होता है। नेम्ड ग्रिड लाइन्स आपको इन लाइनों को सार्थक नाम निर्दिष्ट करने की अनुमति देती हैं, जिससे आपका कोड अधिक पठनीय और समझने में आसान हो जाता है। यह विशेष रूप से जटिल लेआउट से निपटने के दौरान उपयोगी होता है जहां संख्यात्मक सूचकांकों को याद रखना बोझिल हो सकता है।
आप grid-template-columns और grid-template-rows गुणों का उपयोग करके नेम्ड ग्रिड लाइन्स को परिभाषित कर सकते हैं। सिंटैक्स में प्रॉपर्टी के मान के भीतर लाइन के नाम को वर्गाकार कोष्ठक [] में संलग्न करना शामिल है।
उदाहरण: बेसिक नेम्ड ग्रिड लाइन्स
.grid-container {
display: grid;
grid-template-columns: [col-start] 1fr [col-middle] 1fr [col-end];
grid-template-rows: [row-start] 1fr [row-middle] 1fr [row-end];
}
.grid-item {
/* Position the item using named lines */
grid-column-start: col-start;
grid-column-end: col-end;
grid-row-start: row-start;
grid-row-end: row-end;
}
इस उदाहरण में, हमने कॉलम और पंक्तियों दोनों के लिए नेम्ड लाइन्स को परिभाषित किया है। .grid-item को फिर इन नेम्ड लाइन्स का उपयोग करके स्थित किया गया है।
एक ही नाम वाली कई लाइन्स की शक्ति
CSS ग्रिड की कम स्पष्ट, लेकिन अविश्वसनीय रूप से शक्तिशाली विशेषताओं में से एक है कई ग्रिड लाइन्स को एक ही नाम निर्दिष्ट करने की क्षमता। यह आपको अपने ग्रिड लेआउट के भीतर दोहराए जाने वाले पैटर्न बनाने की अनुमति देता है, जिससे जटिल डिज़ाइनों का प्रबंधन करना आसान हो जाता है। हालांकि, यह यह समझने की आवश्यकता भी प्रस्तुत करता है कि CSS ग्रिड इन अस्पष्ट संदर्भों को कैसे हल करता है।
उदाहरण: रिपीटिंग नेम्ड लाइन्स
.grid-container {
display: grid;
grid-template-columns: [col-start] 1fr [col-end col-start] 1fr [col-end];
grid-template-rows: [row-start] 1fr [row-end row-start] 1fr [row-end];
}
.grid-item-1 {
grid-column-start: col-start 1;
grid-column-end: col-end 1;
grid-row-start: row-start 1;
grid-row-end: row-end 1;
}
.grid-item-2 {
grid-column-start: col-start 2;
grid-column-end: col-end 2;
grid-row-start: row-start 2;
grid-row-end: row-end 2;
}
इस मामले में, कॉलम और पंक्तियों दोनों में col-start/col-end और row-start/row-end नाम दोहराए गए हैं। किसी विशिष्ट लाइन को लक्षित करने के लिए, आप नाम का उपयोग करते हैं, उसके बाद एक स्पेस और उस लाइन का सूचकांक जिसे आप चुनना चाहते हैं।
CSS ग्रिड नेम्ड लाइन रेजोल्यूशन: एल्गोरिथ्म
जब आपके पास एक ही नाम वाली कई लाइन्स होती हैं, तो CSS ग्रिड यह निर्धारित करने के लिए एक विशिष्ट एल्गोरिथ्म का उपयोग करता है कि जब आप इसे अपने CSS में संदर्भित करते हैं तो किस लाइन का उपयोग करना है। यह एल्गोरिथ्म यह समझने के लिए महत्वपूर्ण है कि आपके लेआउट कैसे व्यवहार करेंगे।
रेजोल्यूशन प्रक्रिया को निम्नानुसार संक्षेपित किया जा सकता है:
- विशिष्टता (Specificity): CSS ग्रिड पहले उस चयनकर्ता की विशिष्टता पर विचार करता है जहां लाइन नाम का उपयोग किया जाता है। अधिक विशिष्ट चयनकर्ताओं को प्राथमिकता मिलती है।
- स्पष्ट बनाम निहित (Explicit vs. Implicit): स्पष्ट रूप से परिभाषित लाइन्स (
grid-template-columnsऔरgrid-template-rowsका उपयोग करके) निहित रूप से बनाई गई लाइनों (जैसे,grid-auto-columnsयाgrid-auto-rowsका उपयोग करते समय) पर प्राथमिकता लेती हैं। - इंडेक्स-आधारित रेजोल्यूशन: जब कई लाइनों का एक ही नाम होता है, तो आप एक इंडेक्स का उपयोग करके यह निर्दिष्ट कर सकते हैं कि आप किस लाइन को लक्षित करना चाहते हैं (जैसे,
col-start 2)। इंडेक्स 1 से शुरू होता है। - दिशात्मकता (Directionality): रेजोल्यूशन इस बात से भी प्रभावित होता है कि आप
grid-column-start/grid-row-startयाgrid-column-end/grid-row-endका उपयोग कर रहे हैं।-startगुणों के लिए, क्रमांकन ग्रिड की शुरुआत से शुरू होता है।-endगुणों के लिए, क्रमांकन ग्रिड के अंत से शुरू होता है और पीछे की ओर गिना जाता है। - नकारात्मक अनुक्रमण (Negative Indexing): आप ग्रिड लाइनों के अंत से गिनने के लिए नकारात्मक सूचकांकों का उपयोग कर सकते हैं। उदाहरण के लिए,
col-end -1अंतिम `col-end` लाइन को संदर्भित करता है।
इंडेक्स-आधारित रेजोल्यूशन की विस्तृत व्याख्या
आइए इंडेक्स-आधारित रेजोल्यूशन में और गहराई से जाएं। इस उदाहरण पर विचार करें:
.grid-container {
display: grid;
grid-template-columns: [a] 1fr [b] 1fr [a] 1fr [b];
grid-template-rows: [c] 1fr [d] 1fr [c] 1fr [d];
}
.grid-item {
grid-column-start: a 2;
grid-column-end: b -1;
grid-row-start: c 1;
grid-row-end: d -2;
}
इस परिदृश्य में:
grid-column-start: a 2;'a' नाम की दूसरी लाइन का चयन करता है।grid-column-end: b -1;'b' नाम की अंतिम से दूसरी लाइन का चयन करता है (अंत से गिनते हुए)।grid-row-start: c 1;'c' नाम की पहली लाइन का चयन करता है।grid-row-end: d -2;'d' नाम की अंतिम से तीसरी लाइन का चयन करता है (अंत से गिनते हुए)।
अपने ग्रिड लेआउट पर सटीक नियंत्रण के लिए इन बारीकियों को समझना महत्वपूर्ण है।
लाइन रेफरेंस गणना: CSS ग्रिड आपके निर्देशों की व्याख्या कैसे करता है
लाइन रेफरेंस गणना वह प्रक्रिया है जिसके द्वारा CSS ग्रिड इंजन आपके लाइन नाम संदर्भों की व्याख्या करता है और उन्हें विशिष्ट ग्रिड लाइन स्थितियों में अनुवादित करता है। यह गणना ऊपर उल्लिखित सभी कारकों को ध्यान में रखती है, जिसमें विशिष्टता, स्पष्ट/निहित परिभाषाएं, अनुक्रमण और दिशात्मकता शामिल है।
यहां गणना प्रक्रिया का एक विश्लेषण है:
- संभावित मिलानों की पहचान करें: इंजन पहले उन सभी ग्रिड लाइनों की पहचान करता है जो दिए गए नाम से मेल खाती हैं।
- इंडेक्स द्वारा फ़िल्टर करें (यदि प्रदान किया गया हो): यदि कोई इंडेक्स प्रदान किया गया है (जैसे,
a 2), तो इंजन निर्दिष्ट इंडेक्स पर केवल लाइन को शामिल करने के लिए मिलानों को फ़िल्टर करता है। - दिशात्मकता पर विचार करें: यह
-startया-endगुण है या नहीं, इसके आधार पर इंजन क्रमशः ग्रिड लाइनों की शुरुआत या अंत से गिनने के लिए अनुक्रमण को समायोजित करता है। - टकरावों को हल करें: यदि फ़िल्टर करने के बाद भी कई लाइनें मेल खाती हैं, तो इंजन किसी भी शेष टकराव को हल करने के लिए विशिष्टता और स्पष्ट/निहित परिभाषाओं का उपयोग करता है।
- अंतिम स्थिति निर्धारित करें: इंजन तब चयनित ग्रिड लाइन की अंतिम संख्यात्मक स्थिति निर्धारित करता है।
उदाहरण: लाइन रेफरेंस गणना का चित्रण
.grid-container {
display: grid;
grid-template-columns: [start] 1fr [middle] 1fr [start] 1fr [end];
grid-template-rows: [top] 1fr [center] 1fr [bottom];
}
.item {
grid-column-start: start 2;
grid-column-end: end;
grid-row-start: top;
grid-row-end: bottom;
}
आइए grid-column-start: start 2; के लिए लाइन रेफरेंस गणना का विश्लेषण करें:
- संभावित मिलानों की पहचान करें: इंजन को 'start' नाम की दो लाइनें मिलती हैं।
- इंडेक्स द्वारा फ़िल्टर करें: इंडेक्स '2' प्रदान किया गया है, इसलिए इंजन 'start' नाम की दूसरी लाइन का चयन करता है।
- दिशात्मकता पर विचार करें: यह एक
-startगुण है, इसलिए इंजन शुरुआत से गिनता है। - टकरावों को हल करें: कोई टकराव नहीं है क्योंकि इंडेक्स एक ही लाइन को अलग करता है।
- अंतिम स्थिति निर्धारित करें: अंतिम स्थिति तीसरी कॉलम लाइन है (क्योंकि पहली 'start' लाइन पहली कॉलम लाइन है, और दूसरी 'start' लाइन तीसरी कॉलम लाइन है)।
इसलिए, आइटम तीसरी कॉलम लाइन से शुरू होगा।
नेम्ड लाइन्स का उपयोग करने के लिए सर्वोत्तम प्रथाएँ
नेम्ड लाइन्स की शक्ति का प्रभावी ढंग से लाभ उठाने के लिए, इन सर्वोत्तम प्रथाओं पर विचार करें:
- सेमेंटिक नामों का उपयोग करें: ऐसे नाम चुनें जो लाइन के उद्देश्य का स्पष्ट रूप से वर्णन करते हैं। उदाहरण के लिए,
sidebar-start,main-content-end,header-bottomजेनेरिक नामों जैसेline1याcolAकी तुलना में अधिक वर्णनात्मक हैं। - नामकरण परंपराएं स्थापित करें: सुसंगत नामकरण परंपराएं कोड पठनीयता और रखरखाव में सुधार करती हैं। उदाहरण के लिए, आप ग्रिड के क्षेत्र को इंगित करने के लिए एक उपसर्ग का उपयोग कर सकते हैं (जैसे,
header-start,header-end,footer-start,footer-end)। - अस्पष्टता से बचें: जबकि कई लाइनों के लिए एक ही नाम का उपयोग करना शक्तिशाली हो सकता है, यह भ्रम पैदा कर सकता है यदि इसे सावधानी से प्रबंधित नहीं किया जाता है। वांछित लाइनों को स्पष्ट रूप से लक्षित करने के लिए अनुक्रमण और नकारात्मक अनुक्रमण का उपयोग करें।
- अपने ग्रिड का दस्तावेजीकरण करें: अपनी नेम्ड लाइन्स के उद्देश्य और उनका उपयोग कैसे किया जाता है, यह समझाने के लिए अपने CSS में टिप्पणियाँ जोड़ें। इससे अन्य डेवलपर्स (और आपके भविष्य के स्वयं) को आपकी ग्रिड संरचना को समझने में मदद मिलेगी।
- DevTools का उपयोग करें: आधुनिक ब्राउज़र DevTools CSS ग्रिड लेआउट का निरीक्षण करने के लिए उत्कृष्ट उपकरण प्रदान करते हैं, जिसमें नेम्ड लाइन्स का विज़ुअलाइज़ेशन भी शामिल है। अपनी ग्रिड संरचनाओं को डीबग करने और समझने के लिए इन उपकरणों का उपयोग करें।
- पहुंचयोग्यता (accessibility) पर विचार करें: सुनिश्चित करें कि CSS ग्रिड के साथ बनाया गया विज़ुअल लेआउट विकलांग उपयोगकर्ताओं के लिए भी सुलभ है। सामग्री को नेविगेट करने और समझने के वैकल्पिक तरीके प्रदान करने के लिए सेमेंटिक HTML और ARIA विशेषताओं का उपयोग करें। उदाहरण के लिए, हेडिंग (
h1-h6) का उचित उपयोग एक तार्किक संरचना प्रदान कर सकता है।
व्यावहारिक उदाहरण और उपयोग के मामले
आइए कुछ व्यावहारिक उदाहरणों का पता लगाएं कि वास्तविक दुनिया के परिदृश्यों में नेम्ड लाइन्स का उपयोग कैसे किया जा सकता है।
1. एक रिस्पॉन्सिव वेबसाइट लेआउट बनाना
नेम्ड लाइन्स का उपयोग हेडर, साइडबार, मुख्य सामग्री क्षेत्र और फुटर के साथ एक रिस्पॉन्सिव वेबसाइट लेआउट बनाने के लिए किया जा सकता है। ग्रिड को मीडिया प्रश्नों का उपयोग करके विभिन्न स्क्रीन आकारों के लिए आसानी से समायोजित किया जा सकता है।
.grid-container {
display: grid;
grid-template-columns: [full-start] minmax(200px, 1fr) [sidebar-start] 250px [sidebar-end main-start] minmax(300px, 3fr) [main-end full-end];
grid-template-rows: [header-start] auto [header-end nav-start] auto [nav-end main-start] 1fr [main-end footer-start] auto [footer-end];
grid-gap: 10px;
}
header {
grid-column: full-start / full-end;
grid-row: header-start / header-end;
}
nav {
grid-column: sidebar-start / main-end;
grid-row: nav-start / nav-end;
}
main {
grid-column: main-start / main-end;
grid-row: main-start / main-end;
}
aside {
grid-column: sidebar-start / sidebar-end;
grid-row: main-start / main-end;
}
footer {
grid-column: full-start / full-end;
grid-row: footer-start / footer-end;
}
@media (max-width: 768px) {
.grid-container {
grid-template-columns: [full-start] 1fr [full-end];
grid-template-rows: [header-start] auto [header-end nav-start] auto [nav-end main-start] 1fr [main-end aside-start] auto [aside-end footer-start] auto [footer-end];
}
nav {
grid-column: full-start / full-end;
}
aside {
grid-column: full-start / full-end;
grid-row: aside-start / aside-end;
}
}
यह उदाहरण दिखाता है कि कैसे एक मूल वेबसाइट लेआउट बनाया जाए और इसे छोटी स्क्रीन के लिए मुख्य सामग्री के नीचे नेविगेशन और साइडबार को स्टैक करके अनुकूलित किया जाए।
2. एक गैलरी लेआउट बनाना
नेम्ड लाइन्स का उपयोग एक लचीला और गतिशील गैलरी लेआउट बनाने के लिए किया जा सकता है जहां छवियां कई पंक्तियों और स्तंभों में फैल सकती हैं।
.gallery {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
grid-template-rows: [row-start] auto [row-end];
grid-auto-rows: auto;
grid-gap: 10px;
}
.gallery-item:nth-child(1) {
grid-column: 1 / span 2;
grid-row: row-start / span 2;
}
.gallery-item:nth-child(2) {
grid-column: 3 / span 1;
grid-row: row-start / span 1;
}
/* Add more gallery items with different spans */
यह उदाहरण दिखाता है कि कैसे पहले गैलरी आइटम को दो कॉलम और दो पंक्तियों में फैलाया जाए, जिससे एक आकर्षक लेआउट बनता है।
3. एक जटिल फॉर्म लेआउट बनाना
नेम्ड लाइन्स लेबल और इनपुट फ़ील्ड्स के साथ जटिल फॉर्म लेआउट के निर्माण को सरल बना सकती हैं जो ठीक से संरेखित होते हैं।
.form {
display: grid;
grid-template-columns: [label-start] auto [label-end input-start] 1fr [input-end];
grid-template-rows: repeat(auto-fill, minmax(40px, auto));
grid-gap: 5px;
}
label {
grid-column: label-start / label-end;
}
input {
grid-column: input-start / input-end;
}
/* Add labels and input fields for each form element */
यह उदाहरण सुनिश्चित करता है कि सभी लेबल बाईं ओर संरेखित हों और इनपुट फ़ील्ड दाईं ओर संरेखित हों, जिससे एक स्वच्छ और संगठित फॉर्म लेआउट बनता है।
वैश्विक विचार
वैश्विक परियोजनाओं के लिए CSS ग्रिड का उपयोग करते समय, विशेष रूप से नेम्ड लाइन्स के साथ, निम्नलिखित बातों को ध्यान में रखें:
- दाएं-से-बाएं (RTL) भाषाएं: CSS ग्रिड स्वचालित रूप से RTL भाषाओं को संभालता है। हालांकि, आपको यह सुनिश्चित करने के लिए अपनी नेम्ड लाइन्स और ग्रिड संरचनाओं को समायोजित करने की आवश्यकता हो सकती है कि लेआउट RTL संदर्भों में सही ढंग से प्रदर्शित हो। तार्किक गुण (जैसे,
leftऔरrightके बजायstartऔरend) बहुत सहायक हो सकते हैं। - विभिन्न कैरेक्टर सेट: सुनिश्चित करें कि आपकी नेम्ड लाइन्स और CSS चयनकर्ता उन वर्णों का उपयोग करते हैं जो सभी कैरेक्टर सेट द्वारा समर्थित हैं। विशेष वर्णों या गैर-ASCII वर्णों का उपयोग करने से बचें जो कुछ वातावरणों में समस्याएं पैदा कर सकते हैं।
- पहुंचयोग्यता (Accessibility): अपने ग्रिड लेआउट को डिज़ाइन करते समय पहुंचयोग्यता को प्राथमिकता देना याद रखें। विकलांग उपयोगकर्ताओं के लिए सामग्री को नेविगेट करने और समझने के वैकल्पिक तरीके प्रदान करने के लिए सेमेंटिक HTML और ARIA विशेषताओं का उपयोग करें।
- प्रदर्शन (Performance): जबकि CSS ग्रिड आम तौर पर प्रदर्शनकारी होता है, कई नेम्ड लाइन्स और ओवरलैपिंग तत्वों के साथ जटिल ग्रिड लेआउट प्रदर्शन को प्रभावित कर सकते हैं। एक सहज उपयोगकर्ता अनुभव सुनिश्चित करने के लिए अपनी ग्रिड संरचनाओं को अनुकूलित करें और अनावश्यक जटिलता से बचें।
- परीक्षण (Testing): अपने ग्रिड लेआउट का विभिन्न ब्राउज़रों, उपकरणों और स्क्रीन आकारों पर अच्छी तरह से परीक्षण करें ताकि यह सुनिश्चित हो सके कि वे सभी वातावरणों में सही ढंग से प्रदर्शित होते हैं। अपनी ग्रिड संरचनाओं का निरीक्षण और डीबग करने के लिए ब्राउज़र डेवलपर टूल का उपयोग करें।
उन्नत तकनीकें
नेम्ड लाइन्स के साथ `grid-template-areas` का उपयोग करना
हालांकि यह लेख grid-template-columns और grid-template-rows के साथ परिभाषित नेम्ड ग्रिड लाइन्स पर केंद्रित है, यह ध्यान देने योग्य है कि grid-template-areas ग्रिड लेआउट को परिभाषित करने के लिए एक और शक्तिशाली तंत्र प्रदान करता है। आप बहुत अभिव्यंजक और रखरखाव योग्य लेआउट बनाने के लिए कॉलम और पंक्तियों में परिभाषित नेम्ड लाइन्स को क्षेत्रों के साथ जोड़ सकते हैं।
.grid-container {
display: grid;
grid-template-columns: [col-start] 1fr [col-middle] 1fr [col-end];
grid-template-rows: [row-start] 1fr [row-middle] 1fr [row-end];
grid-template-areas:
"header header header"
"sidebar main main"
"footer footer footer";
}
header {
grid-area: header;
}
sidebar {
grid-area: sidebar;
}
main {
grid-area: main;
}
footer {
grid-area: footer;
}
इस उदाहरण में, जबकि कॉलम और पंक्ति लाइनें परिभाषित हैं, `grid-template-areas` क्षेत्रों को परिभाषित करने और प्रत्येक आइटम को क्षेत्र में निर्दिष्ट करने में मदद करता है।
CSS वेरिएबल्स के साथ नेम्ड लाइन्स को मिलाना
और भी अधिक लचीलेपन और पुन: प्रयोज्यता के लिए, आप नेम्ड लाइन्स को CSS वेरिएबल्स के साथ जोड़ सकते हैं। यह आपको वेरिएबल मानों के आधार पर ग्रिड संरचनाओं को गतिशील रूप से परिभाषित करने की अनुमति देता है।
:root {
--grid-column-count: 3;
}
.grid-container {
display: grid;
grid-template-columns: repeat(var(--grid-column-count), [col-start] 1fr) [col-end];
}
इस उदाहरण में, ग्रिड में कॉलम की संख्या --grid-column-count वेरिएबल द्वारा निर्धारित की जाती है, जिसे जावास्क्रिप्ट या मीडिया प्रश्नों का उपयोग करके गतिशील रूप से बदला जा सकता है।
निष्कर्ष
CSS ग्रिड लेआउट में महारत हासिल करने के लिए CSS ग्रिड नेम्ड लाइन रेजोल्यूशन और लाइन रेफरेंस गणना को समझना आवश्यक है। सेमेंटिक नामों का उपयोग करके, नामकरण परंपराओं को स्थापित करके, और रेजोल्यूशन एल्गोरिथ्म को समझकर, आप अपनी वेब परियोजनाओं के लिए लचीले, रखरखाव योग्य और रिस्पॉन्सिव लेआउट बना सकते हैं। पहुंचयोग्यता को प्राथमिकता देना, अपने लेआउट का अच्छी तरह से परीक्षण करना, और अपनी ग्रिड संरचनाओं को डीबग और अनुकूलित करने के लिए DevTools की शक्ति का लाभ उठाना याद रखें। अभ्यास और प्रयोग के साथ, आप CSS ग्रिड की पूरी क्षमता का उपयोग करने और आश्चर्यजनक और कार्यात्मक वेब डिज़ाइन बनाने में सक्षम होंगे।
यह गाइड CSS ग्रिड नेम्ड लाइन्स को प्रभावी ढंग से समझने और उपयोग करने के लिए एक ठोस आधार प्रदान करना चाहिए। अपने वेब डेवलपमेंट कौशल को बढ़ाने और वैश्विक दर्शकों के लिए अभिनव और आकर्षक उपयोगकर्ता अनुभव बनाने के लिए CSS ग्रिड में उपलब्ध विभिन्न सुविधाओं और तकनीकों का पता लगाना जारी रखें।