当前位置:首页 > VUE

vue滑动页面怎么实现

2026-02-23 19:32:52VUE

Vue 滑动页面实现方法

使用原生 CSS 实现滚动

通过 CSS 的 overflow 属性控制容器滚动行为。适用于简单场景,无需额外依赖。

<template>
  <div class="scroll-container">
    <!-- 内容区域 -->
  </div>
</template>

<style>
.scroll-container {
  height: 100vh;
  overflow-y: auto;
}
</style>

使用 better-scroll 库

专门处理移动端滚动的轻量级库,支持惯性滚动、边界回弹等效果。

安装依赖:

npm install @better-scroll/core

示例代码:

<template>
  <div ref="wrapper" class="scroll-wrapper">
    <div class="scroll-content">
      <!-- 滚动内容 -->
    </div>
  </div>
</template>

<script>
import BScroll from '@better-scroll/core'

export default {
  mounted() {
    this.bs = new BScroll(this.$refs.wrapper, {
      scrollY: true,
      click: true
    })
  },
  beforeDestroy() {
    this.bs.destroy()
  }
}
</script>

<style>
.scroll-wrapper {
  height: 100vh;
  overflow: hidden;
}
</style>

使用 vue-virtual-scroller 实现虚拟滚动

适用于长列表场景,只渲染可视区域元素以提升性能。

安装依赖:

npm install vue-virtual-scroller

示例代码:

<template>
  <RecycleScroller
    class="scroller"
    :items="items"
    :item-size="50"
    key-field="id"
  >
    <template v-slot="{ item }">
      <!-- 单条内容模板 -->
    </template>
  </RecycleScroller>
</template>

<script>
import { RecycleScroller } from 'vue-virtual-scroller'

export default {
  components: { RecycleScroller },
  data() {
    return {
      items: [] // 数据源
    }
  }
}
</script>

<style>
.scroller {
  height: 100vh;
}
</style>

实现横向滑动

通过 CSS 的 white-spaceoverflow-x 属性组合实现。

<template>
  <div class="horizontal-scroll">
    <div class="scroll-content">
      <!-- 横向排列的内容 -->
    </div>
  </div>
</template>

<style>
.horizontal-scroll {
  width: 100%;
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
}
.scroll-content {
  display: inline-block;
  white-space: nowrap;
}
</style>

监听滚动事件

通过 @scroll 事件实现滚动监听逻辑。

vue滑动页面怎么实现

<template>
  <div class="scrollable" @scroll="handleScroll">
    <!-- 内容 -->
  </div>
</template>

<script>
export default {
  methods: {
    handleScroll(e) {
      const { scrollTop, scrollHeight, clientHeight } = e.target
      if (scrollHeight - scrollTop === clientHeight) {
        // 到达底部逻辑
      }
    }
  }
}
</script>

注意事项

  • 移动端需添加 -webkit-overflow-scrolling: touch 启用惯性滚动
  • 虚拟滚动适合大数据量场景,但需要精确设置 item-size
  • better-scroll 初始化需确保 DOM 已渲染完成
  • 横向滑动需设置 white-space: nowrap 防止内容换行

标签: 页面vue
分享给朋友:

相关文章

vue 实现ztree

vue 实现ztree

在Vue中实现类似ZTree的功能,可以通过集成第三方库或自定义组件完成。以下是两种常见方法: 使用vue-tree组件 vue-tree是一个轻量级的Vue树形组件,支持复选框、懒加载等功能,适合…

vue实现抽奖轮盘

vue实现抽奖轮盘

实现抽奖轮盘的基本思路 使用Vue实现抽奖轮盘的核心在于动态旋转动画和结果判定。通常需要结合CSS动画或JavaScript动画库(如GSAP)控制轮盘的旋转角度,并通过随机数或后端接口确定最终奖项。…

使用vue实现搜索

使用vue实现搜索

使用 Vue 实现搜索功能 基础搜索实现 在 Vue 中实现搜索功能通常涉及数据绑定、事件监听和列表过滤。以下是一个简单的实现方式: <template> <div&g…

vue实现购物平台

vue实现购物平台

实现购物平台的基本架构 使用Vue.js构建购物平台需要结合前端框架、状态管理、路由和后端接口。以下是一个基本实现方案: 项目初始化与依赖安装 通过Vue CLI创建项目并安装必要依赖: vue…

vue实现批量删除

vue实现批量删除

实现批量删除功能 在Vue中实现批量删除功能通常需要结合前端界面和后端API交互。以下是一个常见的实现方案: 数据准备与界面交互 创建数据列表和选中状态管理 data() { return {…

vue 分页的实现

vue 分页的实现

Vue 分页的实现方法 使用 Element UI 的分页组件 安装 Element UI: npm install element-ui 在 Vue 项目中引入 Element UI 的分页组件:…