当前位置:首页 > VUE

vue实现pc全屏滚动

2026-02-23 10:44:27VUE

实现PC全屏滚动的Vue方案

在Vue中实现全屏滚动效果,可以通过原生CSS结合Vue指令或使用第三方库完成。以下是两种常见方法:

使用原生CSS和Vue指令

通过CSS的height: 100vh实现全屏区块,配合Vue监听滚动事件切换页面:

<template>
  <div class="fullscreen-container" @wheel="handleWheel">
    <div 
      v-for="(section, index) in sections" 
      :key="index"
      class="fullscreen-section"
      :class="{ 'active': currentIndex === index }"
    >
      {{ section.content }}
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      currentIndex: 0,
      sections: [
        { content: '第一屏' },
        { content: '第二屏' },
        { content: '第三屏' }
      ],
      isScrolling: false
    }
  },
  methods: {
    handleWheel(e) {
      if (this.isScrolling) return;
      this.isScrolling = true;

      if (e.deltaY > 0 && this.currentIndex < this.sections.length - 1) {
        this.currentIndex++;
      } else if (e.deltaY < 0 && this.currentIndex > 0) {
        this.currentIndex--;
      }

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

<style>
.fullscreen-container {
  overflow: hidden;
}
.fullscreen-section {
  height: 100vh;
  width: 100%;
  display: flex;
  justify-content: center;
  align-items: center;
  transition: transform 0.8s ease;
}
</style>

使用第三方库vue-fullpage.js

对于更复杂的需求(如动画、锚点导航),推荐使用专为Vue设计的全屏滚动库:

  1. 安装依赖:

    vue实现pc全屏滚动

    npm install vue-fullpage.js --save
  2. 基础实现:

    
    <template>
    <full-page :options="options" ref="fullpage">
     <div class="section">第一屏内容</div>
     <div class="section">第二屏内容</div>
     <div class="section">第三屏内容</div>
    </full-page>
    </template>
import VueFullPage from 'vue-fullpage.js'

export default { components: { 'full-page': VueFullPage }, data() { return { options: { menu: '#navigation', anchors: ['page1', 'page2', 'page3'], sectionsColor: ['#41b883', '#ff5f45', '#0798ec'], navigation: true, scrollBar: false } } } }

vue实现pc全屏滚动

```

性能优化建议

  • 使用transform代替top/left定位实现动画,触发GPU加速
  • 对图片等资源进行懒加载,避免首屏加载过多内容
  • 移动端需添加touch事件支持
  • 考虑节流(throttle)处理滚动事件,避免过度触发

常见问题解决

滚动不流畅
检查是否有多余的CSS属性限制,如overflow: hidden未正确设置,或存在复杂的DOM结构影响渲染性能。

导航点位置偏移
确保父容器没有额外的padding或margin,全屏区块应直接作为body的子元素。

移动端适配
需额外处理touch事件,并考虑禁用浏览器默认的滚动行为:

document.addEventListener('touchmove', function(e) {
  e.preventDefault();
}, { passive: false });

标签: 全屏vue
分享给朋友:

相关文章

vue为啥能实现监听

vue为啥能实现监听

Vue 实现监听的原理 Vue 的监听能力主要基于其响应式系统,该系统通过数据劫持和依赖收集实现。当数据变化时,系统能自动触发视图更新或执行回调函数。 核心机制:Object.definePrope…

vue实现下拉层级

vue实现下拉层级

Vue实现下拉层级菜单 使用Vue实现下拉层级菜单可以通过递归组件或动态渲染的方式完成。以下是两种常见实现方法: 递归组件实现 创建一个递归组件处理多级菜单结构: <template>…

vue实现视窗

vue实现视窗

Vue 实现视窗功能 在 Vue 中实现视窗功能通常涉及监听浏览器窗口大小变化、响应式布局或创建自定义弹窗组件。以下是几种常见实现方式: 监听浏览器窗口大小变化 使用 Vue 的 mounted 和…

vue实现登出

vue实现登出

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

vue filter 实现

vue filter 实现

在 Vue.js 中,过滤器(Filter)是一种用于文本格式化的功能,可以在模板中直接使用。以下是实现过滤器的详细方法: 全局过滤器注册 通过 Vue.filter 方法注册全局过滤器,可在所有组…

vue实现加减

vue实现加减

Vue 实现加减功能 在 Vue 中实现加减功能可以通过数据绑定和事件监听来完成。以下是一个简单的实现方法: 模板部分 <template> <div> <…