优雅实现鼠标跟随效果的代码分享

作者:常德麻将开发公司 阅读:10 次 发布时间:2025-05-01 15:42:25

摘要:随着互联网的发展,更加注重与用户的交互体验,这也推动了网页设计的转变,越来越多的网页开始使用各种炫酷动效来增强用户的体验感。其中,鼠标跟随效果是一种很不错的动效,它不仅可以让网页看起来更加活泼生动,还能增加用户对网页的好感度。本文将从实现这种效果的代码入手,为大家介绍一些优雅实现鼠标跟随效果的代...

随着互联网的发展,更加注重与用户的交互体验,这也推动了网页设计的转变,越来越多的网页开始使用各种炫酷动效来增强用户的体验感。其中,鼠标跟随效果是一种很不错的动效,它不仅可以让网页看起来更加活泼生动,还能增加用户对网页的好感度。本文将从实现这种效果的代码入手,为大家介绍一些优雅实现鼠标跟随效果的代码。

鼠标跟随效果的实现思路

在实现鼠标跟随效果之前,我们需要了解一下他的实现原理。鼠标跟随效果其实就是在鼠标移动时,让某个元素随着鼠标移动而移动,而该元素通常是一个小图标或者一个小图片。那么具体实现的思路是:

1. 监听鼠标移动事件

2. 获取鼠标的坐标,并将其赋值给目标元素

3. 在页面中显示目标元素

说的简单,但是具体实现的麻烦依然是有的,下面我们就来看一下一些优雅的实现方式。

利用CSS3的transform实现

随着CSS3的不断发展,我们可以使用更多的CSS属性来实现各种动画效果,其中transform属性是一个非常有用的属性,它可以用来实现旋转、缩放、移动等效果,也可以用来实现鼠标跟随效果:

```css

.follow{

position: fixed;

top: 0;

left: 0;

transition: transform .2s ease-out;

pointer-events: none; /*禁止对这个元素的事件操作*/

}

```

```javascript

document.addEventListener('mousemove', (e) => {

let follow = document.querySelector('.follow');

let x = e.clientX;

let y = e.clientY;

follow.style.transform = `translate3d(${x}px, ${y}px, 0)`;

});

```

上面的代码中,我们给目标元素添加了一个类名follow,并给该元素设置了fixed定位以及一些CSS属性,其中,pointer-events: none的作用是禁止对这个元素进行事件操作,这样就不会影响到页面的其他操作。另外,transition属性和后面的表达式代表了动画的过渡效果和时间。

接着,我们通过监听鼠标mousemove事件,获取到鼠标的坐标,并将其赋值给目标元素,同时使用translate3d属性来实现元素的移动,这里注意的是,translate3d可以使用硬件加速,会比translate更加流畅。

利用jQuery的实现方式

jQuery是一种集DOM操作、事件处理、动画效果为一体的javascript库,它简单易用,功能强大,是网页交互开发中经常使用的一种工具。如果项目中已经使用了jQuery库,下面的代码可以为您带来很大的便利:

```html

```

```javascript

$(document).mousemove(function (e) {

var x = e.pageX,

y = e.pageY;

$('.follow').animate({

'left': x,

'top': y

}, 300);

});

```

上面的代码中,我们先在页面中添加一个图片元素,然后使用jQuery的mousemove事件来监听鼠标移动,获取到鼠标坐标,并将其赋值给目标元素,在使用animate方法实现目标元素的移动,其中动画效果可以根据实际情况进行调整。

利用canvas实现鼠标跟随效果

对于一些复杂的场景,我们也可以使用canvas来实现鼠标跟随效果,canvas属于HTML5技术之一,具有高度自定义性以及呈现效果良好的特点。

```html

```

```javascript

var canvas = document.getElementById('canvas');

canvas.width = window.innerWidth;

canvas.height = window.innerHeight;

var ctx = canvas.getContext('2d');

var pos = {x:0, y:0};

var nodes = [];

var range = 100;

function init(){

for(var i=0;i<50;i++){

var x = Math.random() * canvas.width,

y = Math.random() * canvas.height,

dx = (Math.random() - 0.5) * 2,

dy = (Math.random() - 0.5) * 2;

var node = new Node(x, y, dx, dy, 2);

nodes.push(node);

}

}

function Node(x, y, dx, dy, r){

this.x = x;

this.y = y;

this.dx = dx;

this.dy = dy;

this.r = r;

}

Node.prototype.draw = function(){

ctx.beginPath();

ctx.arc(this.x, this.y, this.r, 0, Math.PI*2);

ctx.closePath();

ctx.fillStyle = '#eee';

ctx.fill();

}

Node.prototype.update = function(){

if(this.x < 0 || this.x > canvas.width){

this.dx = -this.dx;

}

if(this.y < 0 || this.y > canvas.height){

this.dy = -this.dy;

}

this.x += this.dx;

this.y += this.dy;

var xdiff = this.x - pos.x,

ydiff = this.y - pos.y,

dist = Math.sqrt(xdiff * xdiff + ydiff * ydiff);

if(dist < range){

var opacity = 1 - dist / range;

ctx.beginPath();

ctx.moveTo(this.x, this.y);

ctx.lineTo(pos.x, pos.y);

ctx.closePath();

ctx.strokeStyle = `rgba(238,238,238, ${opacity})`;

ctx.stroke();

}

}

function render(){

ctx.clearRect(0,0,canvas.width,canvas.height);

for(var i=0;i

nodes[i].draw();

nodes[i].update();

}

requestAnimationFrame(render);

}

render();

document.addEventListener('mousemove', function(e){

pos.x = e.clientX;

pos.y = e.clientY;

});

init();

```

上面的代码中,我们先在页面中添加一个canvas元素,然后获取到该元素的上下文,接着用一个类Node来表示每一个小圆点,然后在init函数中初始化了一些小圆点,使用mousemove事件来监听鼠标移动,不断更新鼠标的位置,并将其赋值给pos变量。最后,使用requestAnimationFrame方法不停地更新页面,实现了小圆点和鼠标交互的效果。

结语

上面介绍了三种实现鼠标跟随效果的方式,无论是利用CSS3的transform,jQuery的事件方法,还是canvas绘制,都能够实现鼠标跟随效果。在具体选择什么方式的时候,你可以根据自己的实际需求以及技能水平进行选择。另外,了解实现鼠标跟随效果的基本原理,对于我们理解网页动效有很大的帮助。

  • 原标题:优雅实现鼠标跟随效果的代码分享

  • 本文链接:https://qipaikaifa.cn/zxzx/201786.html

  • 本文由深圳中天华智网小编,整理排版发布,转载请注明出处。部分文章图片来源于网络,如有侵权,请与中天华智网联系删除。
  • 微信二维码

    ZTHZ2028

    长按复制微信号,添加好友

    微信联系

    在线咨询

    点击这里给我发消息QQ客服专员


    点击这里给我发消息电话客服专员


    在线咨询

    免费通话


    24h咨询☎️:157-1842-0347


    🔺🔺 棋牌游戏开发24H咨询电话 🔺🔺

    免费通话
    返回顶部