CSS कस्टम हाईलाइट रेंज के साथ एडवांस्ड टेक्स्ट सिलेक्शन स्टाइलिंग को अनलॉक करें। बेहतर यूजर अनुभव के लिए हाईलाइट के रंग, बैकग्राउंड और बहुत कुछ को कस्टमाइज़ करना सीखें।
CSS कस्टम हाईलाइट रेंज: एडवांस्ड टेक्स्ट सिलेक्शन स्टाइलिंग
टेक्स्ट सिलेक्शन वेब पर एक मौलिक इंटरैक्शन है। जब कोई यूजर वेबपेज पर टेक्स्ट का चयन करता है, तो ब्राउज़र एक डिफ़ॉल्ट हाईलाइट स्टाइल लागू करता है, जो आमतौर पर सफेद टेक्स्ट के साथ नीला बैकग्राउंड होता है। हालाँकि यह कार्यात्मक है, लेकिन यह डिफ़ॉल्ट स्टाइलिंग अक्सर वेबसाइट की डिज़ाइन एस्थेटिक से मेल नहीं खाती। CSS कस्टम हाईलाइट रेंज इन डिफ़ॉल्ट स्टाइल्स को ओवरराइड करने और एक अधिक विज़ुअली सुसंगत और आकर्षक यूजर अनुभव बनाने का एक शक्तिशाली तरीका प्रदान करता है।
टेक्स्ट सिलेक्शन की मूल बातें समझना
कस्टम हाईलाइट रेंज में जाने से पहले, यह समझना महत्वपूर्ण है कि ब्राउज़रों में टेक्स्ट सिलेक्शन कैसे काम करता है। जब कोई यूजर टेक्स्ट का चयन करने के लिए अपने माउस को ड्रैग करता है (या अन्य इनपुट विधियों का उपयोग करता है), तो ब्राउज़र चयनित टेक्स्ट की रेंज की पहचान करता है और डिफ़ॉल्ट हाईलाइट स्टाइल लागू करता है। यह ब्राउज़र के आंतरिक रेंडरिंग इंजन द्वारा नियंत्रित किया जाता है और डिफ़ॉल्ट रूप से, CSS के साथ सीधे नियंत्रणीय नहीं होता है।
डिफ़ॉल्ट सिलेक्शन स्टाइलिंग
डिफ़ॉल्ट टेक्स्ट सिलेक्शन स्टाइलिंग ब्राउज़र के यूजर एजेंट स्टाइलशीट द्वारा नियंत्रित होती है। यह स्टाइलशीट सभी HTML एलिमेंट्स के लिए बेसिक स्टाइलिंग प्रदान करती है और इसमें डिफ़ॉल्ट हाईलाइट स्टाइलिंग शामिल होती है। उपयोग किए गए विशिष्ट रंग और स्टाइल ब्राउज़रों और ऑपरेटिंग सिस्टम के बीच थोड़े भिन्न हो सकते हैं।
::selection स्यूडो-एलिमेंट का परिचय
CSS चयनित टेक्स्ट को लक्षित करने के लिए ::selection स्यूडो-एलिमेंट प्रदान करता है। यह आपको चयनित टेक्स्ट की background-color और color प्रॉपर्टीज को संशोधित करने की अनुमति देता है। हालाँकि, इस दृष्टिकोण की सीमाएँ हैं। यह केवल आपको बैकग्राउंड और टेक्स्ट का रंग बदलने की अनुमति देता है और हाईलाइट रेंज पर अधिक बारीक नियंत्रण प्रदान नहीं करता है।
::selection {
background-color: yellow;
color: black;
}
यह सरल CSS स्निपेट चयनित टेक्स्ट के बैकग्राउंड का रंग पीला और टेक्स्ट का रंग काला कर देगा। हालाँकि यह उपयोगी है, लेकिन यह तो बस शुरुआत है।
CSS कस्टम हाईलाइट रेंज API
CSS कस्टम हाईलाइट रेंज API टेक्स्ट सिलेक्शन को स्टाइल करने का एक अधिक उन्नत और लचीला तरीका प्रदान करता है। यह API आपको विशिष्ट हाईलाइट रेंज को परिभाषित करने और उन पर कस्टम स्टाइल लागू करने की अनुमति देता है। यह विशेष रूप से अधिक आकर्षक और यूजर-फ्रेंडली इंटरफेस बनाने के लिए उपयोगी है।
मुख्य अवधारणाएँ
- हाईलाइट API: अंतर्निहित तकनीक जो कस्टम स्टाइलिंग को सक्षम बनाती है।
- हाईलाइट रीजन्स: टेक्स्ट की विशिष्ट रेंज जिन्हें कस्टम स्टाइलिंग के लिए लक्षित किया जाता है।
- कस्टम स्टाइल्स: CSS प्रॉपर्टीज (सिर्फ रंग और बैकग्राउंड-रंग से परे) जो हाईलाइट रीजन्स पर लागू होती हैं।
CSS कस्टम हाईलाइट रेंज का उपयोग करने के लाभ
- बढ़ी हुई कस्टमाइज़ेशन: ग्रेडिएंट्स, बॉर्डर्स, शैडो और बहुत कुछ सहित CSS प्रॉपर्टीज की एक विस्तृत श्रृंखला लागू करें।
- बेहतर यूजर अनुभव: अधिक आकर्षक और सुसंगत टेक्स्ट सिलेक्शन स्टाइल बनाएं जो आपकी वेबसाइट के डिज़ाइन के अनुरूप हों।
- एक्सेसिबिलिटी: सुनिश्चित करें कि आपकी कस्टम हाईलाइट स्टाइल पर्याप्त कंट्रास्ट और स्पष्ट विज़ुअल संकेत प्रदान करके दृष्टिबाधित यूजर्स के लिए सुलभ हैं।
- बारीक नियंत्रण: कस्टम स्टाइलिंग के लिए टेक्स्ट की विशिष्ट रेंज को लक्षित करें, जिससे अधिक सटीक और संदर्भ-जागरूक हाईलाइटिंग की अनुमति मिलती है।
CSS कस्टम हाईलाइट रेंज को लागू करना
CSS कस्टम हाईलाइट रेंज को लागू करने में उन टेक्स्ट रेंज की पहचान करने के लिए जावास्क्रिप्ट का उपयोग करना शामिल है जिन्हें आप स्टाइल करना चाहते हैं और फिर उन रेंज पर वांछित CSS प्रॉपर्टीज लागू करना शामिल है।
चरण 1: टेक्स्ट रेंज का चयन करना
पहला कदम उस टेक्स्ट रेंज की पहचान करना है जिसे आप स्टाइल करना चाहते हैं। यह विभिन्न जावास्क्रिप्ट तकनीकों का उपयोग करके किया जा सकता है, जैसे:
document.getSelection(): यह मेथड एकSelectionऑब्जेक्ट लौटाता है जो यूजर द्वारा चयनित टेक्स्ट की रेंज का प्रतिनिधित्व करता है।RangeAPI: यह API आपको प्रोग्रामेटिक रूप से टेक्स्ट रेंज बनाने और उनमें हेरफेर करने की अनुमति देता है।
document.getSelection() का उपयोग करके उदाहरण:
const selection = document.getSelection();
if (selection.rangeCount > 0) {
const range = selection.getRangeAt(0);
// Now you have the range object to work with
}
Range API का उपयोग करके उदाहरण:
const range = document.createRange();
const element = document.getElementById('myElement');
range.selectNodeContents(element);
// Now you have a range that selects all content inside element
चरण 2: एक हाईलाइट ऑब्जेक्ट बनाना
एक बार जब आपके पास Range ऑब्जेक्ट हो जाता है, तो आपको एक हाईलाइट ऑब्जेक्ट बनाना होगा। यह ऑब्जेक्ट कस्टम हाईलाइट का प्रतिनिधित्व करेगा और वांछित स्टाइल्स को लागू करने के लिए उपयोग किया जाएगा।
const highlight = new Highlight(range);
चरण 3: हाईलाइट को रजिस्टर करना
हाईलाइट को दृश्यमान बनाने के लिए, आपको इसे CSS.highlights ऑब्जेक्ट के साथ रजिस्टर करना होगा। यह एक ग्लोबल ऑब्जेक्ट है जो पेज पर सभी कस्टम हाईलाइट्स का प्रबंधन करता है।
if (!window.CSS.highlights) {
console.error('CSS Custom Highlight API is not supported in this browser.');
} else {
CSS.highlights.set('my-custom-highlight', highlight);
}
यहाँ, 'my-custom-highlight' एक मनमाना नाम है जिसे आप अपने हाईलाइट की पहचान के लिए चुनते हैं।
चरण 4: CSS के साथ कस्टम स्टाइल्स लागू करना
अंत में, आप अपने CSS में ::highlight() स्यूडो-एलिमेंट का उपयोग करके हाईलाइट पर कस्टम स्टाइल लागू कर सकते हैं।
::highlight(my-custom-highlight) {
background-color: rgba(255, 200, 0, 0.5);
color: #333;
font-weight: bold;
text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.2);
}
यह CSS स्निपेट 'my-custom-highlight' रेंज के भीतर टेक्स्ट पर एक अर्ध-पारदर्शी पीला बैकग्राउंड, गहरा ग्रे टेक्स्ट, बोल्ड फ़ॉन्ट वेट और एक सूक्ष्म टेक्स्ट शैडो लागू करेगा।
संपूर्ण उदाहरण
यहाँ CSS कस्टम हाईलाइट रेंज का उपयोग करने का एक संपूर्ण उदाहरण दिया गया है:
HTML:
This is some text that can be selected. We will customize the highlight styling using CSS Custom Highlight Range.
JavaScript:
const textElement = document.getElementById('myText');
textElement.addEventListener('mouseup', () => {
const selection = document.getSelection();
if (selection.rangeCount > 0) {
const range = selection.getRangeAt(0);
const highlight = new Highlight(range);
if (!window.CSS.highlights) {
console.error('CSS Custom Highlight API is not supported in this browser.');
} else {
CSS.highlights.set('custom-selection', highlight);
}
}
});
CSS:
::highlight(custom-selection) {
background-color: lightgreen;
color: darkgreen;
font-style: italic;
}
इस उदाहरण में, जब यूजर पैराग्राफ के भीतर टेक्स्ट का चयन करने के बाद माउस बटन छोड़ता है, तो जावास्क्रिप्ट कोड एक हाईलाइट बनाता है और उसे रजिस्टर करता है। फिर CSS चयनित टेक्स्ट पर हल्का हरा बैकग्राउंड, गहरा हरा टेक्स्ट रंग, और इटैलिक फ़ॉन्ट स्टाइल लागू करता है।
उन्नत कस्टमाइज़ेशन तकनीकें
CSS कस्टम हाईलाइट रेंज और भी उन्नत कस्टमाइज़ेशन तकनीकों की अनुमति देता है, जिनमें शामिल हैं:
ग्रेडिएंट्स का उपयोग करना
आप आकर्षक हाईलाइट प्रभाव बनाने के लिए CSS ग्रेडिएंट्स का उपयोग कर सकते हैं।
::highlight(gradient-highlight) {
background-image: linear-gradient(to right, #f00, #ff0);
color: white;
font-weight: bold;
}
बॉर्डर्स और शैडो जोड़ना
आप हाईलाइट को और भी अलग दिखाने के लिए उसमें बॉर्डर्स और शैडो जोड़ सकते हैं।
::highlight(border-highlight) {
background-color: rgba(0, 0, 255, 0.2);
border: 2px solid blue;
box-shadow: 2px 2px 5px rgba(0, 0, 0, 0.3);
color: black;
}
शर्तों के आधार पर हाईलाइटिंग
आप कुछ शर्तों के आधार पर हाईलाइट स्टाइल्स को गतिशील रूप से बदलने के लिए जावास्क्रिप्ट का उपयोग कर सकते हैं। उदाहरण के लिए, आप विभिन्न प्रकार के टेक्स्ट को विभिन्न रंगों से हाईलाइट कर सकते हैं।
// Example: Highlight keywords in a different color
const keywords = ['keyword1', 'keyword2', 'keyword3'];
// (Implementation for finding keywords and creating ranges would go here)
// Then, in CSS:
::highlight(keyword-highlight) {
background-color: yellow;
color: red;
}
एक्सेसिबिलिटी संबंधी विचार
कस्टम हाईलाइट स्टाइल्स को लागू करते समय, एक्सेसिबिलिटी पर विचार करना महत्वपूर्ण है। सुनिश्चित करें कि आपकी हाईलाइट स्टाइल्स दृष्टिबाधित यूजर्स के लिए पर्याप्त कंट्रास्ट और स्पष्ट विज़ुअल संकेत प्रदान करती हैं।
कंट्रास्ट अनुपात
सुनिश्चित करें कि आपकी हाईलाइट स्टाइल्स के बैकग्राउंड रंग और टेक्स्ट रंग के बीच का कंट्रास्ट अनुपात WCAG (Web Content Accessibility Guidelines) की आवश्यकताओं को पूरा करता है। सामान्य टेक्स्ट के लिए कम से कम 4.5:1 और बड़े टेक्स्ट के लिए 3:1 का कंट्रास्ट अनुपात अनुशंसित है।
विज़ुअल संकेत
यह इंगित करने के लिए स्पष्ट विज़ुअल संकेत प्रदान करें कि टेक्स्ट का चयन किया गया है। यह अलग-अलग रंगों, बॉर्डर्स या शैडो का उपयोग करके किया जा सकता है।
सहायक तकनीकों के साथ परीक्षण
अपनी कस्टम हाईलाइट स्टाइल्स का परीक्षण स्क्रीन रीडर्स जैसी सहायक तकनीकों के साथ करें ताकि यह सुनिश्चित हो सके कि वे सभी यूजर्स के लिए सुलभ हैं।
ब्राउज़र कम्पैटिबिलिटी
CSS कस्टम हाईलाइट रेंज API एक अपेक्षाकृत नई तकनीक है, और ब्राउज़र समर्थन भिन्न हो सकता है। 2023 के अंत तक, यह क्रोमियम-आधारित ब्राउज़रों (क्रोम, एज, ब्रेव) और सफारी (टेक्नोलॉजी प्रीव्यू) में समर्थित है। फ़ायरफ़ॉक्स ने रुचि व्यक्त की है, लेकिन अभी तक समर्थन लागू नहीं किया गया है।
इस API को प्रोडक्शन में उपयोग करने से पहले नवीनतम ब्राउज़र कम्पैटिबिलिटी जानकारी की जांच करना महत्वपूर्ण है। आप CSS कस्टम हाईलाइट रेंज के लिए ब्राउज़र समर्थन को ट्रैक करने के लिए "Can I use..." जैसी वेबसाइटों का उपयोग कर सकते हैं।
उन ब्राउज़रों के लिए जो API का समर्थन नहीं करते हैं, आप फ़ॉलबैक के रूप में ::selection स्यूडो-एलिमेंट का उपयोग कर सकते हैं।
उपयोग के मामले और उदाहरण
यहाँ कुछ व्यावहारिक उपयोग के मामले और उदाहरण दिए गए हैं कि CSS कस्टम हाईलाइट रेंज का उपयोग कैसे किया जा सकता है:
कोड एडिटर्स
पठनीयता और विज़ुअल अपील में सुधार के लिए कोड एडिटर में चयनित कोड के लिए हाईलाइट स्टाइल्स को कस्टमाइज़ करें। विभिन्न प्रोग्रामिंग भाषाओं के लिए अलग-अलग हाईलाइट स्कीमें भी हो सकती हैं।
डॉक्यूमेंट व्यूअर्स
डॉक्यूमेंट के डिज़ाइन से मेल खाने वाले कस्टम हाईलाइट स्टाइल प्रदान करके डॉक्यूमेंट व्यूअर्स के यूजर अनुभव को बेहतर बनाएं।
ई-लर्निंग प्लेटफॉर्म्स
मुख्य अवधारणाओं या महत्वपूर्ण जानकारी को एक कस्टम स्टाइल में हाईलाइट करके इंटरैक्टिव सीखने के अनुभव बनाएं।
खोज परिणामों की हाईलाइटिंग
मिलान वाले शब्दों को एक विशिष्ट कस्टम स्टाइल के साथ हाईलाइट करके खोज परिणामों की दृश्यता में सुधार करें। विचार करें कि यह एक बहुभाषी खोज में कैसा दिख सकता है, जहाँ हाईलाइट रंग सूक्ष्म रूप से मेल खाने वाले शब्द की भाषा का संकेत दे सकते हैं।
एनोटेशन टूल्स
यूजर्स को महत्वपूर्ण अंशों को चिह्नित करने या नोट्स जोड़ने के लिए कस्टम हाईलाइट स्टाइल्स के साथ टेक्स्ट को एनोटेट करने की अनुमति दें। सहयोगी एनोटेशन के लिए विभिन्न यूजर्स को अलग-अलग हाईलाइट रंग सौंपे जा सकते हैं।
सर्वोत्तम अभ्यास (Best Practices)
- सिमेंटिक HTML का उपयोग करें: अपनी सामग्री को संरचित करने के लिए सिमेंटिक HTML एलिमेंट्स का उपयोग करें। इससे उन टेक्स्ट रेंज की पहचान करना आसान हो जाएगा जिन्हें आप स्टाइल करना चाहते हैं।
- इसे सरल रखें: अत्यधिक जटिल या विचलित करने वाली हाईलाइट स्टाइल्स का उपयोग करने से बचें। लक्ष्य यूजर अनुभव को बढ़ाना है, यूजर को अभिभूत करना नहीं।
- पूरी तरह से परीक्षण करें: अपनी कस्टम हाईलाइट स्टाइल्स का विभिन्न ब्राउज़रों और उपकरणों पर परीक्षण करें ताकि यह सुनिश्चित हो सके कि वे उम्मीद के मुताबिक काम करती हैं।
- प्रदर्शन पर विचार करें: बहुत अधिक हाईलाइट रेंज बनाने से बचें, क्योंकि इससे प्रदर्शन प्रभावित हो सकता है। टेक्स्ट रेंज को कुशलतापूर्वक पहचानने और स्टाइल करने के लिए अपने जावास्क्रिप्ट कोड को ऑप्टिमाइज़ करें।
निष्कर्ष
CSS कस्टम हाईलाइट रेंज वेब पर टेक्स्ट सिलेक्शन को स्टाइल करने का एक शक्तिशाली और लचीला तरीका प्रदान करता है। इस API का उपयोग करके, आप अधिक आकर्षक और यूजर-फ्रेंडली इंटरफेस बना सकते हैं जो यूजर अनुभव को बढ़ाते हैं और आपकी वेबसाइट के डिज़ाइन के अनुरूप होते हैं। हालाँकि ब्राउज़र समर्थन अभी भी विकसित हो रहा है, इस तकनीक के संभावित लाभ इसे वेब डेवलपर्स और डिजाइनरों के लिए एक मूल्यवान उपकरण बनाते हैं। कस्टम हाईलाइट स्टाइल्स को लागू करते समय एक्सेसिबिलिटी और प्रदर्शन को प्राथमिकता देना याद रखें। जैसे-जैसे वेब का विकास जारी रहेगा, CSS कस्टम हाईलाइट रेंज जैसी सुविधाएँ यूजर अनुभव को आकार देने में एक महत्वपूर्ण भूमिका निभाएंगी।