1
1
'use client' ;
2
2
3
- import React , { useEffect , useState , useRef } from 'react' ;
3
+ import React , { useEffect , useState } from 'react' ;
4
4
5
5
const StarryBackground = ( { starCount = 240 } ) => {
6
6
const [ stars , setStars ] = useState ( [ ] ) ;
7
- const [ mousePosition , setMousePosition ] = useState ( { x : 0 , y : 0 } ) ;
8
7
const [ isMobile , setIsMobile ] = useState ( false ) ;
9
- const containerRef = useRef ( null ) ;
10
8
11
9
// 检测是否为移动端
12
10
useEffect ( ( ) => {
@@ -41,44 +39,6 @@ const StarryBackground = ({ starCount = 240 }) => {
41
39
generateStars ( ) ;
42
40
} , [ starCount , isMobile ] ) ; // 添加isMobile作为依赖项
43
41
44
- // 监听鼠标移动
45
- useEffect ( ( ) => {
46
- const handleMouseMove = ( e ) => {
47
- if ( containerRef . current ) {
48
- const rect = containerRef . current . getBoundingClientRect ( ) ;
49
- const centerX = rect . width / 2 ;
50
- const centerY = rect . height / 2 ;
51
-
52
- // 计算鼠标相对于容器中心的位置
53
- const x = ( e . clientX - rect . left - centerX ) / centerX ;
54
- const y = ( e . clientY - rect . top - centerY ) / centerY ;
55
-
56
- setMousePosition ( { x, y } ) ;
57
- }
58
- } ;
59
-
60
- window . addEventListener ( 'mousemove' , handleMouseMove ) ;
61
- return ( ) => window . removeEventListener ( 'mousemove' , handleMouseMove ) ;
62
- } , [ ] ) ;
63
-
64
-
65
- // 计算星星的位移
66
- const getStarTransform = ( star ) => {
67
- // 不同层级的鼠标位移系数(与鼠标移动方向相反)
68
- const mouseLayerMultipliers = {
69
- 1 : 1 , // 最上层,位移最小
70
- 2 : 2 , // 中间层
71
- 3 : 4 , // 最下层,位移最大
72
- } ;
73
-
74
- const mouseMultiplier = mouseLayerMultipliers [ star . layer ] ;
75
-
76
- const offsetX = - mousePosition . x * mouseMultiplier ;
77
- const offsetY = - mousePosition . y * mouseMultiplier ;
78
-
79
- return `translate(${ offsetX } px, ${ offsetY } px)` ;
80
- } ;
81
-
82
42
// 根据层级获取星星的透明度和大小
83
43
const getStarStyle = ( star ) => {
84
44
const layerStyles = {
@@ -93,14 +53,14 @@ const StarryBackground = ({ starCount = 240 }) => {
93
53
opacity : style . opacity ,
94
54
width : style . size ,
95
55
height : style . size ,
96
- transform : getStarTransform ( star ) ,
97
- transition : 'transform 0.1s ease-out' ,
56
+ // 保持静止:不使用 transform/transition
57
+ transform : 'none' ,
58
+ transition : 'none' ,
98
59
} ;
99
60
} ;
100
61
101
62
return (
102
63
< div
103
- ref = { containerRef }
104
64
className = "absolute top-0 left-0 w-full h-full z-0 overflow-hidden bg-[#191E1B]"
105
65
>
106
66
{ stars . map ( ( star ) => (
0 commit comments