当前位置:首页 > JavaScript

js实现跟随

2026-04-06 22:09:52JavaScript

实现跟随效果的JavaScript方法

使用JavaScript实现跟随效果可以通过监听鼠标移动事件或触摸事件,动态更新目标元素的位置。以下是几种常见方法:

监听鼠标移动事件

通过mousemove事件获取鼠标坐标,并将目标元素的lefttop样式属性设置为鼠标位置:

document.addEventListener('mousemove', function(e) {
    const follower = document.getElementById('follower');
    follower.style.left = e.clientX + 'px';
    follower.style.top = e.clientY + 'px';
});

平滑跟随效果

js实现跟随

为让跟随更自然,可以使用缓动动画效果,逐渐缩小目标与鼠标之间的距离:

let posX = 0, posY = 0;
const follower = document.getElementById('follower');

document.addEventListener('mousemove', function(e) {
    posX = e.clientX;
    posY = e.clientY;
});

function animate() {
    const followerX = parseFloat(follower.style.left || 0);
    const followerY = parseFloat(follower.style.top || 0);
    const dx = posX - followerX;
    const dy = posY - followerY;
    follower.style.left = followerX + dx * 0.1 + 'px';
    follower.style.top = followerY + dy * 0.1 + 'px';
    requestAnimationFrame(animate);
}
animate();

跟随旋转或缩放

js实现跟随

通过计算距离或角度,可以实现更复杂的跟随效果,比如旋转或缩放:

document.addEventListener('mousemove', function(e) {
    const follower = document.getElementById('follower');
    const rect = follower.getBoundingClientRect();
    const centerX = rect.left + rect.width / 2;
    const centerY = rect.top + rect.height / 2;
    const angle = Math.atan2(e.clientY - centerY, e.clientX - centerX);
    follower.style.transform = `rotate(${angle}rad)`;
});

跟随触摸事件

在移动设备上,可以使用touchmove事件实现类似效果:

document.addEventListener('touchmove', function(e) {
    const follower = document.getElementById('follower');
    follower.style.left = e.touches[0].clientX + 'px';
    follower.style.top = e.touches[0].clientY + 'px';
});

注意事项

  • 确保目标元素使用position: absoluteposition: fixed定位。
  • 避免频繁的DOM操作,使用transform属性优化性能。
  • 考虑边界情况,防止元素超出可视区域。

标签: js
分享给朋友:

相关文章

js实现

js实现

实现 JavaScript 功能的方法 在 JavaScript 中实现特定功能通常涉及多个步骤。以下是常见的实现方法: 基础语法和变量声明 使用 let 或 const 声明变量: let co…

js实现列表

js实现列表

使用 JavaScript 实现列表 JavaScript 提供了多种方式来实现列表功能,包括数组操作、DOM 元素动态生成等。以下是几种常见的实现方法: 使用数组存储列表数据 数组是 JavaSc…

链表实现js

链表实现js

链表的基本概念 链表是一种线性数据结构,由一系列节点组成,每个节点包含数据和一个指向下一个节点的指针(单向链表)或两个指针(双向链表)。与数组不同,链表在内存中非连续存储,插入和删除操作更高效,但随机…

js实现文字滚动

js实现文字滚动

实现文字滚动的几种方法 使用CSS动画实现滚动 通过CSS的@keyframes和transform属性可以实现平滑的文字滚动效果。 <style> .scroll-text { w…

js计算器的实现

js计算器的实现

实现基础结构 HTML部分需要创建计算器的基本框架,包含显示区域和按钮。使用<div>容器包裹整个计算器,内部设置一个显示屏和多个按钮。 <div class="calculato…

vue js实现登录

vue js实现登录

Vue.js 登录功能实现 依赖安装 确保项目已安装 Vue.js 和必要的依赖库(如 Vue Router、Axios)。通过以下命令安装: npm install vue-router axio…