js和CSS3自定义鼠标特效

js和CSS3自定义鼠标特效

这是一款js和CSS3自定义鼠标特效。该特效中,使用一个DIV元素来自定义鼠标,通过CSS代码来构建鼠标的形状,并通过js代码来驱动鼠标的动画。

使用方法
HTML结构
基本的HTML结构如下。

1
2
3
4
5
6
<!--鼠标形状元素-->
<div id="cursorBlob"></div>
<!--页面内容-->
<div class="wrap">
 
</div>

CSS样式
为鼠标元素添加一些基础的CSS样式。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#cursorBlob {
 width: 50px;
  height: 50px;
  background: linear-gradient(120deg, #FF1744, #E040FB, #2979FF, #00E5FF, #76FF03);
 background-size: 1600% 1600%;
  position: absolute;
  mix-blend-mode: difference;
  pointer-events: none;
  z-index: 1;
  transition: 0.15s linear;
  animation: blobRadius 5s ease infinite, blobBackground 15s ease infinite;
}
 
@keyframes blobRadius {
  0%, 100% {
    border-radius: 43% 77% 80% 40% / 40% 40% 80% 80%;
  }
  20% {
    border-radius: 47% 73% 61% 59% / 47% 75% 45% 73%;
  }
  40% {
    border-radius: 46% 74% 74% 46% / 74% 58% 62% 46%;
  }
  60% {
    border-radius: 47% 73% 61% 59% / 40% 40% 80% 80%;
  }
  80% {
    border-radius: 50% 70% 52% 68% / 51% 61% 59% 69%;
  }
}
@keyframes blobBackground {
  0%, 100% {
    background-position: 0% 50%;
  }
  50% {
    background-position: 100% 50%;
  }
}

Javascript
最后通过下面的JS代码来在鼠标移动时,将制定的鼠标形状元素跟随鼠标一起移动。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
const blobCursor = (() => {
const CURSOR = document.querySelector('#cursorBlob');
const LINKS = document.querySelectorAll('.nav__link');
const setCursorPos = e => {
const { pageX: posX, pageY: posY } = e;
CURSOR.style.top = `${posY - CURSOR.offsetHeight / 2}px`;
CURSOR.style.left = `${posX - CURSOR.offsetWidth / 2}px`;
};
document.addEventListener('mousemove', setCursorPos);
 
const setCursorHover = () => CURSOR.style.transform = 'scale(2.5)';
const removeCursorHover = () => CURSOR.style.transform = '';
LINKS.forEach(link => link.addEventListener('mouseover', setCursorHover));
LINKS.forEach(link => link.addEventListener('mouseleave', removeCursorHover));
 
})();
当前内容只有登录了才能查看,如果您已经注册,请登录
2

发表评论