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


Posted in Javascript onSeptember 19, 2017

本文实例讲述了原生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 对表格的行和列都能加亮显示
Dec 26 Javascript
JavaScript版TAB选项卡效果实例
Aug 16 Javascript
Json序列化和反序列化方法解析
Dec 19 Javascript
JS简单循环遍历json数组的方法
Apr 22 Javascript
JavaScript 函数的执行过程
May 09 Javascript
通过javascript进行UTF-8编码的实现方法
Jun 27 Javascript
分类解析jQuery选择器
Nov 23 Javascript
AngularJS 实现点击按钮获取验证码功能实例代码
Jul 13 Javascript
微信小程序实现的动态设置导航栏标题功能示例
Jan 31 Javascript
vue 项目build错误异常的解决方法
Apr 22 Javascript
微信小程序实现上传word、txt、Excel、PPT等文件功能
May 23 Javascript
如何优化vue打包文件过大
Apr 13 Vue.js
Vue结合SignalR实现前后端实时消息同步
Sep 19 #Javascript
JavaScript实现的原生态兼容IE6可调可控滚动文字功能详解
Sep 19 #Javascript
vue实现页面加载动画效果
Sep 19 #Javascript
深入理解Node.js中通用基础设计模式
Sep 19 #Javascript
微信小程序媒体组件详解(视频,音乐,图片)
Sep 19 #Javascript
Javascript中将变量转换为字符串的三种方法
Sep 19 #Javascript
详解JS中的this、apply、call、bind(经典面试题)
Sep 19 #Javascript
You might like
PHP4实际应用经验篇(2)
2006/10/09 PHP
PHP图片裁剪与缩放示例(无损裁剪图片)
2017/02/08 PHP
javascript 表单的友好用户体现
2009/01/07 Javascript
js新闻滚动 js如何实现新闻滚动效果
2013/01/07 Javascript
Jquery easyui 下loaing效果示例代码
2013/08/12 Javascript
巧用replace将文字表情替换为图片
2014/04/17 Javascript
直接拿来用的15个jQuery代码片段
2015/09/23 Javascript
js立即执行函数: (function ( ){})( ) 与 (function ( ){}( )) 有什么区别?
2015/11/18 Javascript
js实现图片懒加载效果
2017/07/17 Javascript
react native仿微信PopupWindow效果的实例代码
2017/08/07 Javascript
JavaScript实现数值自动增加动画
2017/12/28 Javascript
JS实现的邮箱提示补全效果示例
2018/01/30 Javascript
Webpack 之 babel-loader文件预处理器详解
2018/03/23 Javascript
select2 ajax 设置默认值,初始值的方法
2018/08/09 Javascript
react项目如何使用iconfont的方法步骤
2019/03/13 Javascript
Vue实现附件上传功能
2020/05/28 Javascript
[01:04]不如跳舞!DOTA2新英雄玛尔斯的欢乐日常
2019/03/11 DOTA
Python代理抓取并验证使用多线程实现
2013/05/03 Python
Python解析命令行读取参数--argparse模块使用方法
2018/01/23 Python
Python操作MySQL数据库的三种方法总结
2018/01/30 Python
Django中使用 Closure Table 储存无限分级数据
2019/06/06 Python
python实现得到当前登录用户信息的方法
2019/06/21 Python
Python如何输出警告信息
2020/07/30 Python
Python 执行矩阵与线性代数运算
2020/08/01 Python
selenium学习教程之定位以及切换frame(iframe)
2021/01/04 Python
以实惠的价格提供高品质的时尚:Newchic
2018/01/18 全球购物
可靠的数据流传输TCP
2016/03/15 面试题
护理自荐信
2013/10/22 职场文书
交通事故私了协议书
2014/04/16 职场文书
迎国庆演讲稿
2014/09/15 职场文书
党的群众路线教育实践活动个人对照检查剖析材料
2014/09/23 职场文书
2015年后备干部工作总结
2015/05/15 职场文书
同意离婚答辩状
2015/05/22 职场文书
小学语文新课改心得体会
2016/01/22 职场文书
Python 正则模块详情
2021/11/02 Python
windows系统搭建WEB服务器详细教程
2022/08/05 Servers