首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

js粒子鼠标跟随

基础概念: JavaScript粒子鼠标跟随是一种常见的网页交互效果,它通过在页面上创建一系列小粒子,并使这些粒子跟随鼠标移动,从而实现视觉上的动态效果。这种效果通常用于增强用户体验,使网站看起来更加生动和有趣。

优势

  1. 增强互动性:粒子跟随鼠标移动可以吸引用户的注意力,增加页面的互动性。
  2. 视觉吸引力:动态的粒子效果可以为网站增添视觉上的层次感和吸引力。
  3. 技术展示:这种效果可以展示开发者的技术能力,提升网站的专业形象。

类型

  • 简单粒子跟随:基本的粒子跟随鼠标移动的效果。
  • 复杂粒子系统:包括粒子的生成、消失、颜色变化等多种效果的组合。

应用场景

  • 网站首页:作为背景动画,吸引用户注意。
  • 登录页面:增加用户的沉浸感,提升用户体验。
  • 产品展示页:通过动态效果突出产品特点。

示例代码: 以下是一个简单的JavaScript粒子鼠标跟随的示例代码:

代码语言:txt
复制
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Particle Mouse Follow</title>
    <style>
        body {
            margin: 0;
            overflow: hidden;
            background: #000;
        }
        canvas {
            display: block;
        }
    </style>
</head>
<body>
    <canvas id="canvas"></canvas>
    <script>
        const canvas = document.getElementById('canvas');
        const ctx = canvas.getContext('2d');
        canvas.width = window.innerWidth;
        canvas.height = window.innerHeight;

        class Particle {
            constructor(x, y) {
                this.x = x;
                this.y = y;
                this.size = Math.random() * 5 + 1;
                this.speedX = Math.random() * 3 - 1.5;
                this.speedY = Math.random() * 3 - 1.5;
                this.color = `rgba(${Math.random() * 255}, ${Math.random() * 255}, ${Math.random() * 255}, 0.7)`;
            }

            update() {
                this.x += this.speedX;
                this.y += this.speedY;
                if (this.size > 0.2) this.size -= 0.1;
            }

            draw() {
                ctx.fillStyle = this.color;
                ctx.beginPath();
                ctx.arc(this.x, this.y, this.size, 0, Math.PI * 2);
                ctx.closePath();
                ctx.fill();
            }
        }

        let particles = [];
        const mouse = { x: undefined, y: undefined };

        window.addEventListener('mousemove', (event) => {
            mouse.x = event.x;
            mouse.y = event.y;
        });

        window.addEventListener('resize', () => {
            canvas.width = window.innerWidth;
            canvas.height = window.innerHeight;
        });

        function init() {
            for (let i = 0; i < 50; i++) {
                const x = Math.random() * canvas.width;
                const y = Math.random() * canvas.height;
                particles.push(new Particle(x, y));
            }
        }

        function animate() {
            ctx.clearRect(0, 0, canvas.width, canvas.height);
            for (let i = 0; i < particles.length; i++) {
                particles[i].update();
                particles[i].draw();
                if (particles[i].size <= 0.3) {
                    particles.splice(i, 1);
                    i--;
                }
            }
            requestAnimationFrame(animate);
        }

        init();
        animate();
    </script>
</body>
</html>

常见问题及解决方法

  1. 性能问题:如果页面上的粒子数量过多,可能会导致性能下降。可以通过减少粒子数量或优化渲染循环来解决。
  2. 性能问题:如果页面上的粒子数量过多,可能会导致性能下降。可以通过减少粒子数量或优化渲染循环来解决。
  3. 粒子消失过快:可以通过调整粒子的大小衰减速度来控制粒子的生命周期。
  4. 粒子消失过快:可以通过调整粒子的大小衰减速度来控制粒子的生命周期。
  5. 鼠标移动不流畅:确保在mousemove事件中及时更新鼠标位置,并且在resize事件中重新设置画布大小。

通过以上方法,可以有效实现并优化JavaScript粒子鼠标跟随效果。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

❤️创意网页:HTML5,canvas创作科技感粒子特效(科技感粒子、js鼠标跟随、粒子连线)

科技感粒子特效网页 在本篇技术博客中,我们将学习如何创建一个令人赞叹的科技感粒子特效网页。...这个特效网页将会展示一个动态的、精美的粒子效果,同时会随着鼠标的移动而产生连线效果,增添一份炫酷的科技氛围。我们将使用HTML、CSS和JavaScript来实现这个效果。...代码的主要功能包括: 创建粒子和连线的类。 初始化粒子数组,并在画布上绘制粒子。 根据鼠标的位置更新粒子的运动状态,并绘制粒子之间的连线。 实现动画效果,使粒子和连线随着时间不断更新。 ​...particle.draw(); } drawConnections(); requestAnimationFrame(animate); } // 监听鼠标移动事件...,根据鼠标位置更新粒子运动状态 document.addEventListener("mousemove", (e) => { const mouseX = e.clientX; const

2.1K10
  • 原生JS | 导航底部横线跟随鼠标缓动

    功能效果 功能需求明确 横向导航条; 当鼠标在导航区域当中左右移动时,横线跟随鼠标移动。...鼠标跟随特效 结构分析 与jQuery实现方法当中使用的结构有所不同,为了更好的获取标签,所以使用如下代码结构: 样式处理 样式方面与此前没有什么变化,依旧使用定位的思路来实现,此处不再重复给出样式代码...原生JS功能实现 功能代码解析 在该效果中,由于鼠标移入淡入或淡出的功能代码的原理与jQuery基本类似,所以不做重复书写,只实现导航底部跟随的效果。...逻辑(原生JS)实现相关知识 计时器; 缓冲运动; 数学对象。 计时器 通过计时器(此处使用的是setTimeout),实现在一定时间间隔之后,执行一次函数当中的功能。...数学对象 在JS当中,最小的单位为1像素,对于缓冲运动当中,所计算出的缓冲结果是存在小数的,这些小数需要计算为整数再做处理。

    7.2K81

    Canvas跟随鼠标炫彩小球

    跟随鼠标炫彩小球 canvas没有让我失望,真的很有意思 实现效果 超级炫酷 ?...实现原理 创建小球 给小球添加随机颜色,随机半径 鼠标移动通过实例化,新增小球 通过调用给原型新增的方法,来实现小球的动画效果 通过定时器不断地更新画布 实现过程 创建小球 通过创建函数收纳小球所有的样式...,再通过实例化函数,将鼠标当前的位置传递给Ball函数,让通过实例化创建出来的小球,最后将创建出来的小球存入数组中,数组中以对象形式存放着每个小球的属性和属性值 function Ball(x, y,...this.dy = parseInt(Math.random() * 10) - 5;//`-5`是让小球能向四周随机移动 ballArr.push(this);//添加小球 } //监听鼠标移动事件.../画圆,位置,半径 ctx.fillStyle = this.color;//颜色 ctx.fill(); } //监听鼠标移动事件

    1.9K40

    CSS mask 实现鼠标跟随镂空效果

    ,最后实现效果是这样的: 进一步,还能实现任意形状的镂空效果: 鼠标经过的地方清晰可见,其他地方则是模糊的。...按照以往的经验,可能会在 js 中直接修改元素的 style 属性,类似这样 img.addEventListener('mousemove', (ev) => { img.style.left...其实,我们只需要鼠标的坐标,在 CSS 中也能完全实现跟随的效果。 这里借助 CSS 变量,那一切就好办了!....wrap::before{ left: calc(var(--x) * 100%); top: calc(var(--y) * 100%); } 然后鼠标坐标的获取可以使用 JS 来计算...vYJPaVy 再比如一个心形❤,实现效果如下: 完整代码可以查看:https://codepen.io/xboxyan/pen/KKvEBjb 只有想不到,没有做不到 七、总结和说明 以上实现了一个鼠标跟随镂空的效果

    2.5K20
    领券