当前位置:首页 > JavaScript

js 实现全屏滚动

2026-01-30 13:55:08JavaScript

实现全屏滚动的 JavaScript 方法

全屏滚动是一种常见的网页交互效果,通常用于单页应用或展示型网站。以下是几种实现方式:

使用原生 JavaScript 实现

监听鼠标滚轮事件或触摸事件,通过计算滚动距离触发页面切换:

js 实现全屏滚动

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) {
    sections[index].scrollIntoView({
        behavior: 'smooth'
    });
}

使用 CSS scroll-snap 属性

结合 CSS 的 scroll-snap 特性实现更流畅的效果:

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

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

使用第三方库

常见的全屏滚动库可以简化开发:

js 实现全屏滚动

  • fullPage.js
  • pagePiling.js
  • swiper.js

以 fullPage.js 为例:

new fullpage('#fullpage', {
    sectionsColor: ['#f2f2f2', '#4BBFC3', '#7BAABE'],
    navigation: true,
    scrollingSpeed: 1000
});

移动端兼容处理

需要额外处理触摸事件:

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

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

性能优化建议

  • 使用 requestAnimationFrame 优化滚动动画
  • 对滚动事件进行节流处理
  • 预加载下一屏的内容
  • 考虑使用 CSS transform 代替直接修改 scrollTop

注意事项

  • 确保浏览器兼容性
  • 处理好滚动边界情况
  • 提供导航指示器
  • 考虑无障碍访问需求
  • 测试不同设备上的表现

以上方法可以根据项目需求选择适合的实现方案,原生实现灵活性高但开发成本较大,第三方库可以快速实现但可能有体积开销。

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

相关文章

js实现动画

js实现动画

使用 CSS 动画与 JavaScript 控制 通过 JavaScript 动态添加或移除 CSS 类来触发动画。CSS 定义关键帧(@keyframes),JavaScript 通过 classL…

js实现日历

js实现日历

实现日历的基本思路 使用JavaScript实现日历的核心是动态生成日期表格,并处理月份切换逻辑。需要计算当前月的天数、起始星期几,并动态渲染到页面上。 获取当前日期信息 通过Date对象获取当前年…

js实现驼峰

js实现驼峰

实现驼峰命名的几种方法 使用正则表达式和字符串替换 通过正则表达式匹配字符串中的特定模式(如下划线或短横线),并将其后的字母转换为大写,同时移除分隔符。 function toCamelCase(s…

js钟表实现

js钟表实现

实现JavaScript钟表的基本方法 创建一个简单的JavaScript钟表可以通过以下步骤完成,涵盖数字和模拟两种形式。 数字钟表实现 HTML结构只需一个显示时间的容器: <div i…

js实现密码

js实现密码

密码强度验证 使用正则表达式验证密码强度是一种常见方法。以下代码检查密码是否包含大小写字母、数字和特殊字符,且长度至少为8位: function checkPasswordStrength(pass…

js实现代码雨

js实现代码雨

实现代码雨效果 使用HTML5 Canvas和JavaScript可以轻松实现经典的代码雨效果。以下是完整的实现代码和说明: HTML结构 <!DOCTYPE html> <htm…