Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> JavaScript

JavaScript से वेबसाइट पर बैकग्राउंड कलर टॉगल करें (माउसओवर पर)

JavaScript के mouseover और mouseout इवेंट्स का उपयोग करके वेबसाइट पर बैकग्राउंड कलर को टॉगल करना सीखें जब आप अपना माउस इसके अंदर और बाहर ले जाते हैं।

HTML

एक साधारण HTML पेज के लिए यहां कुछ मार्कअप है:

<!DOCTYPE html> 
<html> 
<body> 
  <h1>Move your move over this page</h1> 
</body> 
</html>

आप इस ट्यूटोरियल को फॉलो करने के लिए CodePen जैसे फ्री ऑनलाइन टेक्स्ट एडिटर का उपयोग कर सकते हैं।

JavaScript

जब यूजर अपना माउस पेज पर और वेबसाइट फ्रेम के बाहर ले जाता है तो वेबसाइट बैकग्राउंड कलर को टॉगल करने के लिए आपको:

  • <body> एलिमेंट को टार्गेट करें और इसके रेफरेंस को एक वेरिएबल में स्टोर करें।
  • window ऑब्जेक्ट पर इवेंट लिसनर्स सेट करें जो दो इवेंट टाइप्स के लिए सुनते हैं, mouseover, और mouseout
  • दो कलर वैल्यूज़ के साथ backgroundColor प्रॉपर्टी को टॉगल करें।

बॉडी एलिमेंट का रेफरेंस स्टोर करें

सबसे पहले आपको अपनी वेबसाइट के <body> एलिमेंट का रेफरेंस स्टोर करने की आवश्यकता है, जो वेब पेज पर सभी कंटेंट को लपेटता है:

const bodyElement = document.querySelector("body")

"ऑन माउसओवर" इवेंट सेट करना

अब आइए एक इवेंट सेट करें जो सुने जब यूजर पेज पर अपना माउस ले जाता है, और फिर एक फंक्शन एक्सीक्यूट करें जो बैकग्राउंड कलर को लाल में बदल देता है। अपने JavaScript फाइल में निम्नलिखित कोड जोड़ें:

const bodyElement = document.querySelector("body") 
// नया कोड 
window.addEventListener("mouseover", function() { 
  bodyElement.style.backgroundColor = "red" 
})

बढ़िया, यह काम करता है!

"ऑन माउसआउट" इवेंट सेट करना

तो जब यूजर अपना माउस फिर से वेबसाइट फ्रेम के बाहर ले जाता है तो बैकग्राउंड कलर को वापस डिफ़ॉल्ट व्हाइट में कैसे बदलें?

आप ऊपर से विंडो इवेंट को कॉपी कर सकते हैं, और mouseover को mouseout से बदल सकते हैं, और backgroundColor को "white" से बदल सकते हैं।

तब आपका कोड ऐसा दिखेगा:

const bodyElement = document.querySelector("body") 
window.addEventListener("mouseover", function() { 
  bodyElement.style.backgroundColor = "red" 
}) 
// नया कोड 
window.addEventListener("mouseover", function() { 
  bodyElement.style.backgroundColor = "white" 
})

यह काम करता है!

लेकिन क्या यह इस समस्या को हल करने का सबसे अच्छा तरीका है?

खैर, दुर्भाग्य से, हम एक सिंगल इवेंट लिसनर में कई इवेंट्स नहीं जोड़ सकते (jQuery के विपरीत), जो कोड को कम रिडंडेंट बना देगा।

हालांकि, हम इसके बजाय दो नामित फंक्शन्स सेट कर सकते हैं और प्रत्येक को विंडो इवेंट लिसनर में पास कर सकते हैं, जैसे:

const bodyElement = document.querySelector("body") 
function mouseOver() { 
  bodyElement.style.backgroundColor = "red" 
} 
function mouseOut() { 
  bodyElement.style.backgroundColor = "white" 
} 
window.addEventListener("mouseover", mouseOver) 
window.addEventListener("mouseout", mouseOut)

जैसा कि आप देख सकते हैं, यह पहले की तरह ही काम करता है।

ऊपर का रीफैक्टर किया गया कोड थोड़ा क्लीनर है, इस अर्थ में कि यह अनाम (नामहीन) फंक्शन्स का उपयोग न करने के सामान्य JavaScript दिशानिर्देशों का पालन करता है।

यह कोड पुन: प्रयोज्य भी है क्योंकि अब आप दोनों नामित फंक्शन्स को किसी भी प्रकार के इवेंट लिसनर से कॉल कर सकते हैं, जो कई स्थितियों में व्यावहारिक है।

कोड डेमो देखें।

कलर वैल्यूज़ के लिए आप या तो वास्तविक नामों (जैसे "red"), हेक्स या rgba वैल्यूज़ का उपयोग कर सकते हैं।

  1. - JavaScript से कॉलम के बीच नियम का रंग कैसे सेट करें?

    कॉलम नियम का रंग सेट करना कॉलम के बीच नियम (रेखा) का रंग सेट करने के लिए JavaScript में columnRuleColor प्रॉपर्टी का उपयोग करें। उदाहरण <!DOCTYPE html> <html> <head> <style> #myID { column-count: 4; column-rule: 4px outset yellow; } <

  1. - JavaScript से एलिमेंट के चारों ओर आउटलाइन का रंग कैसे सेट करें?

    उदाहरण outlineColor प्रॉपर्टी से आउटलाइन का रंग सेट करें। <!DOCTYPE html> <html> <head> <style> #box { width: 450px; background-color: orange; border: 3px solid red; } </style> </head> <body> <p>आउट

  1. JavaScript से टेक्स्ट टॉगल करें JavaScript से टेक्स्ट टॉगल करें

    JavaScript का उपयोग करके किसी एलिमेंट का टेक्स्ट कंटेंट दो स्थितियों के बीच टॉगल करना एक सामान्य UI पैटर्न है (जैसे अधिक दिखाएं/कम दिखाएं, चालू/बंद)। उदाहरण <!DOCTYPE html> <html> <head> <meta name=viewport content=width=device-width, initial-scale=1 /> <style> bo