實現效果
一、隱藏原來的游標
/* 隱藏預設滑鼠游標 */
html,body{
cursor: none;
}
- 但發現游標懸停在超連結時仍會顯示手指游標,所以需要單獨設定屬性:
/* 隱藏連結的滑鼠游標 */
a{
cursor: none;
}
二、設定兩個樣式並設定屬性
/* 圓形游標1樣式 */
.circle-cursor1 {
/* 固定定位,距離頂部和左側的位置 */
position: fixed;
top: -3px;
left: -3px;
/* 寬度和高度,形成圓形 */
width: 8px;
height: 8px;
border-radius: 50%; /* 圓形的邊界半徑 */
background-color: rgb(237, 230, 230); /* 背景顏色 */
pointer-events: none; /* 不響應滑鼠事件 */
z-index: 9999; /* 層級 */
-webkit-transform: translate(-50%, -50%);
transform: translate(-50%, -50%); /* 居中 */
cursor: none; /* 隱藏游標 */
}
/* 圓形游標2樣式 */
.circle-cursor2 {
/* 固定定位,距離頂部和左側的位置 */
position: fixed;
top: -8px;
left: -8px;
/* 寬度和高度,形成較大的圓形 */
width: 18px;
height: 18px;
border-radius: 50%; /* 圓形的邊界半徑 */
background-color: rgba(87, 84, 84, 0.557); /* 背景顏色 */
pointer-events: none; /* 不響應滑鼠事件 */
z-index: 9998; /* 層級 */
-webkit-transform: translate(-50%, -50%);
transform: translate(-50%, -50%); /* 居中 */
-webkit-transition: -webkit-transform 0.2s ease-out;
transition: -webkit-transform 0.2s ease-out;
transition: transform 0.2s ease-out;
transition: transform 0.2s ease-out, -webkit-transform 0.2s ease-out; /* 過渡效果 */
cursor: none; /* 隱藏游標 */
}
三、監聽游標位置並讓兩個圓形游標跟隨
document.addEventListener('mousemove', function (e) {
// 獲取圓形游標1的元素
var cursor1 = document.querySelector('.circle-cursor1');
// 獲取圓形游標2的元素
var cursor2 = document.querySelector('.circle-cursor2');
// 更新圓形游標1和游標2的位置,以滑鼠的座標為基準
cursor1.style.transform = cursor2.style.transform = `translate(${e.clientX}px, ${e.clientY}px)`;
});
四、html頁面建立兩個元素
<div class="circle-cursor1"></div>
<div class="circle-cursor2"></div>