当前位置:首页 > VUE

vue 实现平滑滚动

2026-01-18 04:50:31VUE

vue 实现平滑滚动的方法

使用原生 scrollIntoView

通过调用元素的 scrollIntoView 方法并设置 behavior: 'smooth' 实现平滑滚动。适用于简单场景。

document.getElementById('target').scrollIntoView({
  behavior: 'smooth'
});

自定义滚动函数

通过 window.scrollTo 结合 requestAnimationFrame 实现自定义滚动动画,适合需要精细控制的情况。

function smoothScrollTo(targetPosition, duration = 1000) {
  const startPosition = window.pageYOffset;
  const distance = targetPosition - startPosition;
  let startTime = null;

  function animation(currentTime) {
    if (!startTime) startTime = currentTime;
    const timeElapsed = currentTime - startTime;
    const run = easeInOutQuad(timeElapsed, startPosition, distance, duration);
    window.scrollTo(0, run);
    if (timeElapsed < duration) requestAnimationFrame(animation);
  }

  function easeInOutQuad(t, b, c, d) {
    t /= d / 2;
    if (t < 1) return c / 2 * t * t + b;
    t--;
    return -c / 2 * (t * (t - 2) - 1) + b;
  }

  requestAnimationFrame(animation);
}

使用 vue-scrollto 插件

安装官方推荐的 vue-scrollto 插件,提供声明式指令和编程式调用。

npm install vue-scrollto

注册插件后,可通过指令或方法调用:

import VueScrollTo from 'vue-scrollto';
Vue.use(VueScrollTo);

// 指令方式
<a v-scroll-to="'#target'">Scroll</a>

// 方法调用
this.$scrollTo('#target', {
  duration: 800,
  easing: 'ease-in'
});

结合 CSS scroll-behavior

在支持 CSS 的现代浏览器中,可通过全局样式启用平滑滚动(需注意浏览器兼容性)。

html {
  scroll-behavior: smooth;
}

注意事项

  • 移动端需测试性能表现,复杂动画可能导致卡顿
  • 自定义滚动函数需考虑边界条件(如滚动距离为0)
  • 插件方案需注意版本兼容性,建议查看最新文档

vue 实现平滑滚动

标签: 平滑vue
分享给朋友:

相关文章

vue实现计时

vue实现计时

Vue 实现计时功能 在 Vue 中实现计时功能可以通过多种方式完成,以下是几种常见的方法: 使用 setInterval 实现基础计时器 通过 setInterval 和 clearInterva…

vue权限实现

vue权限实现

Vue 权限实现方案 基于路由的权限控制 通过路由守卫实现权限验证,在路由配置中添加meta字段标记权限要求。在router.beforeEach中检查用户权限与路由要求的匹配情况。 // rout…

vue插件实现

vue插件实现

Vue 插件实现方法 Vue 插件是一种向 Vue 应用程序添加全局功能的机制。插件可以包含全局指令、过滤器、混入、实例方法等。 插件的基本结构 一个 Vue 插件通常是一个对象或函数,需要暴露一个…

vue 实现树状

vue 实现树状

Vue 实现树状结构的方法 递归组件实现树状结构 递归组件是 Vue 中实现树状结构的常见方法。通过组件自身调用自身,可以轻松构建多层级树状结构。 <template> <ul…

vue 实现modal

vue 实现modal

Vue 实现 Modal 的方法 使用 Vue 原生组件 通过 Vue 的组件系统可以轻松实现 Modal。创建一个可复用的 Modal 组件,通过 props 控制显示与隐藏。 <temp…

vue实现录像

vue实现录像

Vue 实现录像功能 在 Vue 中实现录像功能通常需要借助浏览器的 MediaDevices API 和 MediaRecorder API。以下是实现步骤: 获取用户摄像头和麦克风权限 使用…