原生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 计算当天是本年本月的第几周
Mar 22 Javascript
js之事件冒泡和事件捕获详细介绍
Oct 28 Javascript
jQuery中removeProp()方法用法实例
Jan 05 Javascript
javascript验证手机号和实现星号(*)代替实例
Aug 16 Javascript
js HTML5多媒体影音播放
Oct 17 Javascript
javascript 中null和undefined区分和比较
Apr 19 Javascript
Vue学习笔记进阶篇之vue-cli安装及介绍
Jul 18 Javascript
Javascript 严格模式use strict详解
Sep 16 Javascript
Angular学习笔记之集成三方UI框架、控件的示例
Mar 23 Javascript
微信小程序实现弹出层效果
May 26 Javascript
vue 微信扫码登录(自定义样式)
Jan 06 Javascript
Element Dialog对话框的使用示例
Jul 26 Javascript
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
php通过文件头检测文件类型通用代码类(zip,rar等)
2010/10/19 PHP
探讨方法的重写(覆载)详解
2013/06/08 PHP
PHP解码unicode编码的中文字符代码分享
2014/08/13 PHP
PHP使用内置dir类实现目录遍历删除
2015/03/31 PHP
PHP实现适用于文件内容操作的分页类
2016/06/15 PHP
Display SQL Server Login Mode
2007/06/21 Javascript
jQuery焦点图切换特效插件封装实例
2013/08/18 Javascript
Jquery模仿Baidu、Google搜索时自动补充搜索结果提示
2013/12/26 Javascript
ext中store.load跟store.reload的区别示例介绍
2014/06/17 Javascript
jquery取子节点及当前节点属性值的方法
2014/09/09 Javascript
JavaScript生成SQL查询表单的方法
2015/08/13 Javascript
javascript如何操作HTML下拉列表标签
2015/08/20 Javascript
跟我学习JScript的Bug与内存管理
2015/11/18 Javascript
浅谈javascript中的Function和Arguments
2016/08/30 Javascript
JS简单判断函数是否存在的方法
2017/02/13 Javascript
js实现下一页页码效果
2017/03/07 Javascript
Vue监听数据对象变化源码
2017/03/09 Javascript
vue2 前后端分离项目ajax跨域session问题解决方法
2017/04/27 Javascript
Vue.js递归组件构建树形菜单
2017/12/24 Javascript
如何去除vue项目中的#及其ie9兼容性
2018/01/11 Javascript
vue src动态加载请求获取图片的方法
2018/10/17 Javascript
基于vue如何发布一个npm包的方法步骤
2019/05/15 Javascript
JS实现的排列组合算法示例
2019/07/16 Javascript
[04:21]狐狸妈带你到现场 DOTA2 TI中国区预选赛线下赛路线指引
2014/05/22 DOTA
python实现数通设备端口监控示例
2014/04/02 Python
利用Tkinter和matplotlib两种方式画饼状图的实例
2017/11/06 Python
对numpy和pandas中数组的合并和拆分详解
2018/04/11 Python
Python实现求解一元二次方程的方法示例
2018/06/20 Python
python实现按行分割文件
2019/07/22 Python
建筑设计所实习生自我鉴定
2013/09/25 职场文书
八一建军节活动方案
2014/02/10 职场文书
家长寄语大全
2014/04/02 职场文书
小学竞选班长演讲稿
2014/09/09 职场文书
先进工作者申报材料
2014/12/23 职场文书
教师听课学习心得体会
2016/01/15 职场文书
浅谈redis整数集为什么不能降级
2021/07/25 Redis