Skip to content

Commit 2e42c17

Browse files
committed
feat: add high-performance mouse-tracking aura glow background effect
1 parent a9cb2a8 commit 2e42c17

1 file changed

Lines changed: 29 additions & 0 deletions

File tree

src/App.tsx

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,28 @@ export default function App() {
1515

1616
useEffect(() => setStreak(computeStreak()), [])
1717

18+
useEffect(() => {
19+
const glow = document.getElementById('mouse-glow')
20+
if (!glow) return
21+
22+
const handleMouseMove = (e: MouseEvent) => {
23+
glow.style.transform = `translate3d(${e.clientX}px, ${e.clientY}px, 0)`
24+
glow.style.opacity = '1'
25+
}
26+
27+
const handleMouseLeave = () => {
28+
glow.style.opacity = '0'
29+
}
30+
31+
window.addEventListener('mousemove', handleMouseMove)
32+
document.addEventListener('mouseleave', handleMouseLeave)
33+
34+
return () => {
35+
window.removeEventListener('mousemove', handleMouseMove)
36+
document.removeEventListener('mouseleave', handleMouseLeave)
37+
}
38+
}, [])
39+
1840
useEffect(() => {
1941
let active = true
2042
const feedSources = SOURCES.filter((s) => s.feed)
@@ -54,6 +76,13 @@ export default function App() {
5476

5577
return (
5678
<div className="relative min-h-screen bg-zinc-950 text-zinc-100 selection:bg-violet-500/30 overflow-x-hidden">
79+
{/* 鼠标跟随动态微光 */}
80+
<div
81+
id="mouse-glow"
82+
className="pointer-events-none fixed -left-[150px] -top-[150px] h-[300px] w-[300px] rounded-full bg-violet-500/12 blur-[100px] transition-opacity duration-700 opacity-0 will-change-transform"
83+
style={{ transform: 'translate3d(0px, 0px, 0)' }}
84+
/>
85+
5786
{/* 氛围渐变光晕 */}
5887
<div className="pointer-events-none absolute -top-40 -left-40 h-[600px] w-[600px] rounded-full bg-violet-600/12 blur-[130px] animate-float-1" />
5988
<div className="pointer-events-none absolute top-1/4 -right-40 h-[700px] w-[700px] rounded-full bg-fuchsia-600/8 blur-[145px] animate-float-2" />

0 commit comments

Comments
 (0)