当前位置:首页 > VUE

vue实现全屏上下滚动

2026-01-21 06:39:30VUE

实现全屏上下滚动效果

在Vue中实现全屏上下滚动效果,可以通过监听鼠标滚轮事件或键盘事件来控制页面滚动。以下是两种常见的实现方式:

使用CSS和Vue指令

通过CSS设置全屏容器,结合Vue指令监听滚动事件:

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

<script>
export default {
  data() {
    return {
      sections: [
        { content: '第一屏内容' },
        { content: '第二屏内容' },
        { content: '第三屏内容' }
      ],
      currentIndex: 0
    }
  },
  directives: {
    wheel: {
      inserted(el, binding) {
        el.addEventListener('wheel', binding.value)
      },
      unbind(el, binding) {
        el.removeEventListener('wheel', binding.value)
      }
    }
  },
  methods: {
    handleWheel(e) {
      e.preventDefault()
      if (e.deltaY > 0) {
        this.scrollDown()
      } else {
        this.scrollUp()
      }
    },
    scrollDown() {
      if (this.currentIndex < this.sections.length - 1) {
        this.currentIndex++
        window.scrollTo({
          top: window.innerHeight * this.currentIndex,
          behavior: 'smooth'
        })
      }
    },
    scrollUp() {
      if (this.currentIndex > 0) {
        this.currentIndex--
        window.scrollTo({
          top: window.innerHeight * this.currentIndex,
          behavior: 'smooth'
        })
      }
    }
  }
}
</script>

<style>
.fullscreen-container {
  height: 100vh;
  overflow: hidden;
}
.section {
  height: 100vh;
  display: flex;
  justify-content: center;
  align-items: center;
  font-size: 2rem;
}
</style>

使用第三方库

对于更复杂的需求,可以使用专门的全屏滚动库如vue-fullpage.js

  1. 安装依赖:

    npm install vue-fullpage.js
  2. 在Vue项目中使用:

    
    <template>
    <full-page ref="fullpage" :options="options">
     <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: { licenseKey: 'YOUR_KEY_HERE', scrollingSpeed: 700, navigation: true, anchors: ['page1', 'page2', 'page3'] } } } }

@import 'vue-fullpage.js/dist/vue-fullpage.css'; .section { text-align: center; font-size: 3em; } ```

响应式处理

为确保在不同设备上都能正常显示,可以添加响应式处理:

vue实现全屏上下滚动

@media (max-width: 768px) {
  .section {
    font-size: 1.5rem;
  }
}
// 在Vue组件中添加触摸事件支持
mounted() {
  let startY
  this.$el.addEventListener('touchstart', e => {
    startY = e.touches[0].clientY
  })
  this.$el.addEventListener('touchend', e => {
    const endY = e.changedTouches[0].clientY
    if (startY - endY > 50) {
      this.scrollDown()
    } else if (endY - startY > 50) {
      this.scrollUp()
    }
  })
}

标签: 全屏上下
分享给朋友:

相关文章

Vue实现网页全屏

Vue实现网页全屏

Vue实现网页全屏的方法 在Vue中实现网页全屏功能可以通过浏览器的全屏API来实现。以下是几种常见的实现方式: 使用原生JavaScript全屏API 浏览器提供了requestFullscree…

vue实现全屏切换

vue实现全屏切换

实现全屏切换的基本方法 使用 Vue 实现全屏切换可以通过浏览器提供的 Fullscreen API 来实现。以下是一个完整的实现方案。 安装必要的依赖(如需要) npm install scre…

vue点击局部实现全屏

vue点击局部实现全屏

实现局部全屏的方法 在Vue中实现局部全屏可以通过浏览器的Fullscreen API来完成。以下是一个完整的实现方案。 安装依赖 确保项目环境中已经安装了Vue。如果使用Vue 3,可以通过以下命…

vue实现全屏遮罩屏

vue实现全屏遮罩屏

实现全屏遮罩屏的方法 在Vue中实现全屏遮罩屏可以通过CSS和Vue组件结合完成。遮罩屏通常用于模态框、加载动画或阻止用户与页面交互的场景。 基础CSS样式 创建一个覆盖全屏的固定定位元素,设置较高…

vue实现上下排序

vue实现上下排序

Vue实现上下排序功能 使用Vue实现上下排序功能可以通过多种方式完成,常见的有数组操作、第三方库或自定义指令。以下是几种实现方法: 数组交换法 在Vue组件中定义数据数组和排序方法,通过交换数组…

vue实现上下循环滚动

vue实现上下循环滚动

实现上下循环滚动的Vue组件 使用CSS动画和Vue的动态绑定实现无限循环滚动效果。以下是一个基础实现方案: <template> <div class="scroll-con…