原生javascript实现的全屏滚动功能示例

发布时间 - 2026-01-11 03:19:15    点击率:

本文实例讲述了原生javascript实现的全屏滚动功能。分享给大家供大家参考,具体如下:

原理:

1. 计算当前浏览器屏幕高度,每次翻页显示的内容高度即为屏幕高度

2. 对鼠标滚轮事件进行监听,注意滚轮事件的浏览器兼容问题。

废话不多说,直接上代码

html代码:

<div id="wrap">
  <div id="main" style="top: 0;">
    <div class="content num1">
      <img src="https://www.bing.com/az/hprichbg/rb/SingingRingingTree_ZH-CN12497946624_1920x1080.jpg" width="100%" height="100%">
    </div>
    <div class="content num2">
      <img src="https://www.bing.com/az/hprichbg/rb/ShenandoahNP_ZH-CN9981989975_1920x1080.jpg" width="100%" height="100%">
    </div>
    <div class="content num3">
      <img src="https://www.bing.com/az/hprichbg/rb/GareSaintLazare_ZH-CN6611772290_1920x1080.jpg" width="100%" height="100%">
    </div>
    <div class="content num4">
      <img src="https://www.bing.com/az/hprichbg/rb/FriendshipSquare_ZH-CN8820626148_1920x1080.jpg" width="100%" height="100%">
    </div>
  </div>
</div>

css代码:

#wrap{overflow: hidden;width: 100%;}
#main{top: 0;position: relative;}
.content{width: 100%;margin: 0;height: 100%;}
.num1{background: #e8e8e8;}
.num2{background: pink;}
.num3{background: yellow;}
.num4{background: orange;}

js代码:

<script type="text/javascript">
  var wrap = document.getElementById("wrap");
  var divHeight = window.innerHeight;
  wrap.style.height = divHeight + "px";
  var content = $(".content");//懒得写获取类的原生js代码了,直接用了jquery,=。=
  content.height(divHeight);
  var startTime = 0, //开始翻屏时间
    endTime = 0,
    now = 0;
  if ((navigator.userAgent.toLowerCase().indexOf("firefox")!=-1)){
    //for firefox;
    document.addEventListener("DOMMouseScroll",scrollFun,false);
  }
  else if (document.addEventListener) {
    document.addEventListener("mousewheel",scrollFun,false);
  }
  else if (document.attachEvent) {
    document.attachEvent("onmousewheel",scrollFun);
  }
  else{
    document.onmousewheel = scrollFun;
  }
  //滚动事件处理函数
  function scrollFun(event){
      startTime = new Date().getTime();
      var delta = event.detail || (-event.wheelDelta);
      if ((endTime - startTime) < -1000) {
        //1秒内执行一次翻页
        if (delta > 0 && parseInt(main.style.top) > -divHeight * ( content.length - 1)) { //向下翻页
          now += divHeight ;
          turnPage(now);
        }
        if (delta < 0 && parseInt(main.style.top) < 0) { //向上翻页
          now -= divHeight ;
          turnPage(now);
        }
        endTime = new Date().getTime();
      }
      else{
        event.preventDefault();
      }
  }
  //翻页函数
  function turnPage(now){
    $("#main").animate({top:(-now+'px')},1000);
    //懒得写动画代码了,直接用了jquery,=。=
  }
</script>

更多关于JavaScript相关内容感兴趣的读者可查看本站专题:《JavaScript切换特效与技巧总结》、《JavaScript查找算法技巧总结》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》及《JavaScript数学运算用法总结》

希望本文所述对大家JavaScript程序设计有所帮助。


# javascript  # 全屏滚动  # JavaScript全屏和退出全屏事件总结(附代码)  # fullPage.js和CSS3实现全屏滚动效果  # 原生js实现类似fullpage的单页/全屏滚动  # Javascript 实现全屏滚动实例代码  # JS实现全屏的四种写法  # jQuery插件fullPage.js实现全屏滚动效果  # JS 全屏和退出全屏详解及实例代码  # 全屏滚动插件fullPage.js使用实例解析  # 浅谈javascript控制HTML5的全屏操控  # 浏览器兼容的问题  # js实现各浏览器全屏代码实例  # 翻页  # 用了  # 相关内容  # 鼠标  # 遍历  # 感兴趣  # 数据结构  # 给大家  # 多说  # 更多关于  # 全屏  # 即为  # 所述  # 程序设计  # 讲述了  # www  # https  # src  # hprichbg  # az 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel如何与Docker(Sail)协同开发?(环境搭建教程)  教学论文网站制作软件有哪些,写论文用什么软件 ?  Laravel项目怎么部署到Linux_Laravel Nginx配置详解  Android GridView 滑动条设置一直显示状态(推荐)  JS去除重复并统计数量的实现方法  香港服务器建站指南:外贸独立站搭建与跨境电商配置流程  如何在Windows虚拟主机上快速搭建网站?  PythonWeb开发入门教程_Flask快速构建Web应用  如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南  西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?  Win11怎么查看显卡温度 Win11任务管理器查看GPU温度【技巧】  高防服务器租用首荐平台,企业级优惠套餐快速部署  Laravel怎么配置S3云存储驱动_Laravel集成阿里云OSS或AWS S3存储桶【教程】  javascript事件捕获机制【深入分析IE和DOM中的事件模型】  Laravel如何实现多语言支持_Laravel本地化与国际化(i18n)配置教程  Gemini怎么用新功能实时问答_Gemini实时问答使用【步骤】  Win10如何卸载预装Edge扩展_Win10卸载Edge扩展教程【方法】  zabbix利用python脚本发送报警邮件的方法  Laravel怎么防止CSRF攻击_Laravel CSRF保护中间件原理与实践  手机怎么制作网站教程步骤,手机怎么做自己的网页链接?  Laravel的契約(Contracts)是什么_深入理解Laravel Contracts与依赖倒置  高防服务器租用指南:配置选择与快速部署攻略  Android利用动画实现背景逐渐变暗  油猴 教程,油猴搜脚本为什么会网页无法显示?  悟空识字怎么关闭自动续费_悟空识字取消会员自动扣费步骤  Laravel如何使用withoutEvents方法临时禁用模型事件  香港服务器网站测试全流程:性能评估、SEO加载与移动适配优化  网站制作壁纸教程视频,电脑壁纸网站?  Win11怎么关闭透明效果_Windows11辅助功能视觉效果设置  在Oracle关闭情况下如何修改spfile的参数  jquery插件bootstrapValidator表单验证详解  今日头条AI怎样推荐抢票工具_今日头条AI抢票工具推荐算法与筛选【技巧】  php打包exe后无法访问网络共享_共享权限设置方法【教程】  如何在IIS服务器上快速部署高效网站?  Python进程池调度策略_任务分发说明【指导】  Laravel如何为API生成Swagger或OpenAPI文档  Laravel如何使用Passport实现OAuth2?(完整配置步骤)  Laravel广播系统如何实现实时通信_Laravel Reverb与WebSockets实战教程  Bootstrap整体框架之JavaScript插件架构  Laravel如何实现图片防盗链功能_Laravel中间件验证Referer来源请求【方案】  Laravel Fortify是什么,和Jetstream有什么关系  Laravel队列任务超时怎么办_Laravel Queue Timeout设置详解  Laravel如何正确地在控制器和模型之间分配逻辑_Laravel代码职责分离与架构建议  如何用JavaScript实现文本编辑器_光标和选区怎么处理  C++时间戳转换成日期时间的步骤和示例代码  谷歌浏览器如何更改浏览器主题 Google Chrome主题设置教程  如何在宝塔面板中修改默认建站目录?  Laravel如何配置Horizon来管理队列?(安装和使用)  Laravel如何实现邮件验证激活账户_Laravel内置MustVerifyEmail接口配置【步骤】  标题:Vue + Vuex 项目中正确使用 JWT 进行身份认证的实践指南