เรียนรู้วิธีสลับสีพื้นหลังบนเว็บไซต์เมื่อคุณเลื่อนเมาส์เข้าและออกโดยใช้ mouseover
ของ JavaScript และ 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")
// New code
window.addEventListener("mouseover", function() {
bodyElement.style.backgroundColor = "red"
})
เยี่ยมมาก ได้ผล!
กำลังตั้งค่าเหตุการณ์ “on mouseout”
แล้วเราจะเปลี่ยนสีพื้นหลังกลับเป็นสีขาวเริ่มต้นได้อย่างไร เมื่อผู้ใช้เลื่อนเมาส์ไปนอกกรอบเว็บไซต์อีกครั้ง
คุณสามารถคัดลอกเหตุการณ์หน้าต่างจากด้านบนและแทนที่ mouseover
ด้วย mouseout
และ backgroundColor
เป็น "white"
.
จากนั้นโค้ดของคุณจะมีลักษณะดังนี้:
const bodyElement = document.querySelector("body")
window.addEventListener("mouseover", function() {
bodyElement.style.backgroundColor = "red"
})
// New code
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 ที่ไม่ใช้ฟังก์ชันที่ไม่ระบุชื่อ (ไม่ระบุชื่อ)
รหัสนี้ยัง ใช้ซ้ำได้ เนื่องจากตอนนี้คุณสามารถเรียกทั้งสอง ชื่อ ฟังก์ชันจากผู้ฟังเหตุการณ์ทุกประเภท ซึ่งใช้ได้จริงในหลายสถานการณ์
ตรวจสอบการสาธิตโค้ด
สำหรับค่าสี คุณสามารถใช้ชื่อจริง (เช่น "สีแดง"), ฐานสิบหก หรือ rgba ค่า