Skip to content

Commit c88ad46

Browse files
committed
bug: fixed cursor animation
1 parent c74cdb7 commit c88ad46

File tree

2 files changed

+38
-11
lines changed

2 files changed

+38
-11
lines changed

client/src/component/Cursor.jsx

Lines changed: 32 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -5,30 +5,51 @@ import '../css/Cursor.css';
55
const CustomCursor = () => {
66
const mainCursor = useRef(null);
77
const trailingCircles = useRef([]);
8+
const [isCursorVisible, setIsCursorVisible] = useState(true);
89

910
useEffect(() => {
1011
const onMouseMove = (e) => {
11-
mainCursor.current.style.transform = `translate(${e.clientX}px, ${e.clientY}px)`;
12+
if (isCursorVisible) {
13+
mainCursor.current.style.transform = `translate(${e.clientX}px, ${e.clientY}px)`;
1214

13-
trailingCircles.current.forEach((circle, index) => {
14-
setTimeout(() => {
15-
circle.style.transform = `translate(${e.clientX}px, ${e.clientY}px) scale(${1 - index * 0.1})`;
16-
}, index * 20);
17-
});
15+
trailingCircles.current.forEach((circle, index) => {
16+
setTimeout(() => {
17+
circle.style.transform = `translate(${e.clientX}px, ${e.clientY}px) scale(${1 - index * 0.1})`;
18+
}, index * 20);
19+
});
20+
}
1821
};
1922

20-
window.addEventListener("mousemove", onMouseMove);
21-
return () => window.removeEventListener("mousemove", onMouseMove);
22-
}, []);
23+
const handleMouseLeave = () => {
24+
setIsCursorVisible(false);
25+
};
26+
27+
const handleMouseEnter = () => {
28+
setIsCursorVisible(true);
29+
};
30+
31+
document.addEventListener("mousemove", onMouseMove);
32+
document.addEventListener("mouseleave", handleMouseLeave);
33+
document.addEventListener("mouseenter", handleMouseEnter);
34+
35+
return () => {
36+
document.removeEventListener("mousemove", onMouseMove);
37+
document.removeEventListener("mouseleave", handleMouseLeave);
38+
document.removeEventListener("mouseenter", handleMouseEnter);
39+
};
40+
}, [isCursorVisible]);
2341

2442
return (
2543
<>
26-
<div ref={mainCursor} className="main-cursor"></div>
44+
<div
45+
ref={mainCursor}
46+
className={`main-cursor ${!isCursorVisible ? "hidden" : ""}`}
47+
></div>
2748
{[...Array(8)].map((_, i) => (
2849
<div
2950
key={i}
3051
ref={(el) => (trailingCircles.current[i] = el)}
31-
className="trailing-circle"
52+
className={`trailing-circle ${!isCursorVisible ? "hidden" : ""}`}
3253
></div>
3354
))}
3455
</>

client/src/css/Cursor.css

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
height: 22px;
88
border-radius: 50%;
99
pointer-events: none;
10+
transition: opacity 0.1s ease, transform 0.07s ease;
1011
}
1112

1213
.main-cursor {
@@ -19,3 +20,8 @@
1920
z-index: 999;
2021
transition: transform 0.07s ease;
2122
}
23+
24+
.main-cursor.hidden,
25+
.trailing-circle.hidden {
26+
opacity: 0;
27+
}

0 commit comments

Comments
 (0)