当前位置:首页 > JavaScript

js 实现全屏滚动

2026-04-04 05:36:04JavaScript

全屏滚动实现方法

全屏滚动(Full Page Scroll)是一种常见的网页交互效果,用户滚动鼠标或触摸屏幕时,页面会以整屏为单位切换。以下是几种实现方法:

使用原生JavaScript实现

监听鼠标滚轮事件或触摸事件,计算滚动方向并切换页面:

let currentSection = 0;
const sections = document.querySelectorAll('.section');
const totalSections = sections.length;

window.addEventListener('wheel', (e) => {
  if (e.deltaY > 0) {
    // 向下滚动
    if (currentSection < totalSections - 1) {
      currentSection++;
      scrollToSection(currentSection);
    }
  } else {
    // 向上滚动
    if (currentSection > 0) {
      currentSection--;
      scrollToSection(currentSection);
    }
  }
});

function scrollToSection(index) {
  window.scrollTo({
    top: sections[index].offsetTop,
    behavior: 'smooth'
  });
}

使用CSS Scroll Snap

CSS Scroll Snap可以更简单地实现全屏滚动效果,无需复杂JavaScript:

.container {
  scroll-snap-type: y mandatory;
  overflow-y: scroll;
  height: 100vh;
}

.section {
  scroll-snap-align: start;
  height: 100vh;
}

使用第三方库

对于更复杂的需求,可以使用专门的全屏滚动库:

  1. fullPage.js - 功能丰富的全屏滚动库

    new fullpage('#fullpage', {
      autoScrolling: true,
      scrollHorizontally: true
    });
  2. Swiper.js - 支持全屏滚动的滑动库

    new Swiper('.swiper-container', {
      direction: 'vertical',
      slidesPerView: 1,
      mousewheel: true,
      pagination: {
        el: '.swiper-pagination',
        clickable: true
      }
    });

移动端适配

针对触摸设备需要添加触摸事件处理:

js 实现全屏滚动

let startY;
document.addEventListener('touchstart', (e) => {
  startY = e.touches[0].clientY;
});

document.addEventListener('touchend', (e) => {
  const endY = e.changedTouches[0].clientY;
  if (startY - endY > 50) {
    // 向上滑动
    if (currentSection < totalSections - 1) {
      currentSection++;
      scrollToSection(currentSection);
    }
  } else if (endY - startY > 50) {
    // 向下滑动
    if (currentSection > 0) {
      currentSection--;
      scrollToSection(currentSection);
    }
  }
});

性能优化建议

  • 使用requestAnimationFrame优化滚动动画
  • 避免在滚动过程中进行复杂的DOM操作
  • 对滚动事件进行节流处理
  • 考虑使用CSS硬件加速(transform属性)

以上方法可以根据项目需求选择适合的实现方式,简单的效果可以使用CSS Scroll Snap,复杂交互建议使用成熟的第三方库。

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

相关文章

js实现跳转

js实现跳转

使用 window.location 跳转 通过修改 window.location.href 或直接使用 window.location 实现页面跳转,适用于普通跳转或带参数的 URL。 // 方…

js分组实现

js分组实现

分组实现方法 在JavaScript中,可以通过多种方式实现数组或对象的分组操作。以下是几种常见的方法: 使用Array.prototype.reduce() 通过reduce方法可以轻松实现数组分…

js实现tab选项卡切换

js实现tab选项卡切换

实现Tab选项卡切换的JavaScript方法 使用纯JavaScript实现Tab切换功能,可以通过监听点击事件动态切换内容显示状态。以下是两种常见实现方式: 基础DOM操作实现 // 获取所有…

js实现预览

js实现预览

文件上传预览实现 使用JavaScript实现文件上传预览功能,可以通过FileReader对象读取文件内容并显示预览。以下代码支持图片、文本和PDF文件的预览: // HTML部分需要包含…

js实现抽奖

js实现抽奖

实现抽奖功能的基本思路 抽奖功能的核心是随机选择奖项并展示结果。可以通过数组存储奖项,利用随机数生成索引,最后通过动画增强用户体验。 准备奖项数据 定义一个数组存储奖项信息,每个奖项可以包含名称、图…

jquery js

jquery js

jQuery 简介 jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画和 Ajax 交互。它兼容多种浏览器,提供易于使用的 API,使开发者能够更高…