Moving the Mouse: mouseover
, mouseout
, mouseenter
, mouseleave
in JavaScript
Mouse events in JavaScript help detect when the cursor moves over elements. The four key events related to this are:
mouseover
– Triggers when the mouse enters an element or its child elements.mouseout
– Triggers when the mouse leaves an element or its child elements.mouseenter
– Triggers when the mouse enters an element but not its children.mouseleave
– Triggers when the mouse leaves an element but not its children.
š¹ Difference Between mouseover
/ mouseout
and mouseenter
/ mouseleave
Event | Triggers when moving | Affects child elements? | Bubbling? |
---|---|---|---|
mouseover | Into an element or its children | ✅ Yes | ✅ Yes |
mouseout | Out of an element or its children | ✅ Yes | ✅ Yes |
mouseenter | Into an element only | ❌ No | ❌ No |
mouseleave | Out of an element only | ❌ No | ❌ No |
š¹ Example 1: mouseover
and mouseout
These events trigger when moving over or out of an element or its child elements.
✔ HTML:
š Effect:
mouseover
: Changes background to light blue when the mouse enters the div.mouseout
: Changes background to light coral when the mouse leaves.
✅ Works on child elements too!
š¹ Example 2: mouseenter
and mouseleave
(No Bubbling!)
These events fire only when entering/leaving the element itself, not its children.
š Effect:
mouseenter
: Background turns light green when the mouse enters the div.mouseleave
: Background turns light coral when the mouse leaves.
✅ Ignores child elements (unlike mouseover
/mouseout
).
š¹ Example 3: Detect Mouse Movement Inside an Element
We can track mouse movement inside an element using mousemove
.
š Effect: Logs the mouse coordinates when moving inside the box.
š¹ When to Use These Events?
✅ mouseover
/ mouseout
→ Use when detecting hover including child elements (e.g., dropdown menus).
✅ mouseenter
/ mouseleave
→ Use when detecting hover only on the element itself (e.g., tooltips).
✅ mousemove
→ Use for tracking mouse position (e.g., custom cursors, effects).
š Understanding these events helps create smooth user interactions and animations!