当前位置:首页 > VUE

vue实现fullpage

2026-03-27 14:54:59VUE

Vue 实现 FullPage 滚动效果

使用 Vue 实现全屏滚动(FullPage)效果可以通过原生开发或借助现有库完成。以下是两种常见方法:

使用 vue-fullpage.js 库

安装 vue-fullpage.js:

vue实现fullpage

npm install vue-fullpage.js --save

在 Vue 项目中引入并注册组件:

vue实现fullpage

import Vue from 'vue'
import VueFullPage from 'vue-fullpage.js'

Vue.use(VueFullPage)

在模板中使用:

<template>
  <full-page ref="fullpage" :options="options">
    <div class="section">第一屏内容</div>
    <div class="section">第二屏内容</div>
    <div class="section">第三屏内容</div>
  </full-page>
</template>

<script>
export default {
  data() {
    return {
      options: {
        licenseKey: 'YOUR_KEY',
        scrollingSpeed: 700,
        navigation: true
      }
    }
  }
}
</script>

<style>
.section {
  height: 100vh;
  width: 100%;
}
</style>

原生实现 FullPage 效果

通过监听滚轮事件和 CSS 过渡实现基础效果:

<template>
  <div class="fullpage-container" ref="container">
    <div 
      v-for="(page, index) in pages" 
      :key="index"
      class="page"
      :style="{ transform: `translateY(${currentIndex * -100}vh)` }"
    >
      {{ page.content }}
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      currentIndex: 0,
      pages: [
        { content: '第一屏' },
        { content: '第二屏' },
        { content: '第三屏' }
      ],
      isScrolling: false
    }
  },
  mounted() {
    window.addEventListener('wheel', this.handleWheel)
  },
  beforeDestroy() {
    window.removeEventListener('wheel', this.handleWheel)
  },
  methods: {
    handleWheel(e) {
      if (this.isScrolling) return

      this.isScrolling = true

      if (e.deltaY > 0) {
        this.currentIndex = Math.min(this.currentIndex + 1, this.pages.length - 1)
      } else {
        this.currentIndex = Math.max(this.currentIndex - 1, 0)
      }

      setTimeout(() => {
        this.isScrolling = false
      }, 800)
    }
  }
}
</script>

<style>
.fullpage-container {
  overflow: hidden;
  height: 100vh;
}

.page {
  height: 100vh;
  width: 100%;
  transition: transform 0.8s ease;
}
</style>

注意事项

  • 移动端需要额外处理 touch 事件
  • 原生实现需要考虑浏览器兼容性
  • 性能优化:使用 will-change 或硬件加速
  • 路由同步:如需保持 URL 与当前页面对应,需结合 vue-router

两种方法各有优势:使用库更快速但灵活性较低,原生实现更可控但开发成本较高。根据项目需求选择合适方案。

标签: vuefullpage
分享给朋友:

相关文章

vue实现登出

vue实现登出

实现Vue登出功能 登出功能通常涉及清除用户会话、令牌或本地存储的数据,并重定向到登录页面。以下是几种常见的实现方式: 清除用户令牌和状态 在Vuex的store中定义一个logout mutati…

vue实现 hover

vue实现 hover

实现 Vue 中的 hover 效果 在 Vue 中实现 hover 效果可以通过多种方式完成,以下是常见的几种方法: 使用 CSS 伪类 最简单的方式是直接使用 CSS 的 :hover 伪类,无…

vue实现pc

vue实现pc

Vue 实现 PC 端应用开发 Vue.js 是一个流行的前端框架,适用于构建 PC 端 Web 应用。以下是关键步骤和最佳实践: 项目初始化 使用 Vue CLI 或 Vite 创建项目:…

vue实现导航

vue实现导航

使用 Vue Router 实现导航 Vue Router 是 Vue.js 官方提供的路由管理器,用于构建单页应用(SPA)的导航系统。以下是实现导航的基本步骤。 安装 Vue Router n…

vue实现layout

vue实现layout

Vue 实现 Layout 布局的方法 在 Vue 中实现 Layout 布局通常涉及路由嵌套、组件化设计和动态渲染。以下是几种常见的实现方式: 使用嵌套路由 通过 Vue Router 的嵌套路由…

vue如何实现登录

vue如何实现登录

实现登录功能的基本步骤 使用Vue实现登录功能通常需要结合后端API、状态管理以及路由控制。以下是常见的实现方式: 创建登录表单组件 在Vue组件中构建包含用户名和密码输入框的表单: <te…