当前位置:首页 > 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
分享给朋友:

相关文章

vue.js实现轮播

vue.js实现轮播

Vue.js 实现轮播功能 使用第三方库(推荐) Vue.js 生态中有许多成熟的轮播组件库,例如 vue-awesome-swiper 或 swiper,它们功能丰富且易于集成。 安装 swipe…

js实现全屏

js实现全屏

实现全屏的基本方法 使用JavaScript实现全屏功能主要依赖Element.requestFullscreen()方法。现代浏览器均支持此API,但不同浏览器可能需要添加前缀。 // 触发全屏…

js jquery

js jquery

jQuery 简介 jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画设计和 Ajax 交互。它兼容多种浏览器,提供易于使用的 API,使开发者能够…

js实现变形

js实现变形

使用 CSS 和 JavaScript 实现元素变形 在 JavaScript 中实现变形效果通常结合 CSS 的 transform 属性,通过动态修改该属性实现元素的旋转、缩放、倾斜或平移。 基…

js实现防洪

js实现防洪

防抖(Debounce)实现 防抖的核心思想是在事件触发后延迟执行回调函数,若在延迟时间内再次触发事件,则重新计时。适用于输入框搜索、窗口调整等场景。 function debounce(f…

js分页实现

js分页实现

分页的基本原理 分页的核心是通过计算当前页码和数据偏移量,从服务器或本地数据中截取对应范围的数据进行展示。通常需要以下参数:当前页码(currentPage)、每页条数(pageSize)、总数据量(…