原生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 相关文章推荐
jQuery使用手册之一
Mar 24 Javascript
js每次Title显示不同的名言
Sep 25 Javascript
jquery插件开发注意事项小结
Jun 04 Javascript
改变隐藏的input中value的值代码
Dec 30 Javascript
js使用eval解析json实例与注意事项分享
Jan 18 Javascript
JavaScript中document对象使用详解
Jan 06 Javascript
jQuery前端分页示例分享
Feb 10 Javascript
jQuery取消ajax请求的方法
Jun 09 Javascript
在JavaScript中处理时间之getHours()方法的使用
Jun 10 Javascript
angular.js 路由及页面传参示例
Feb 24 Javascript
layer.js之回调销毁对话框的例子
Sep 11 Javascript
vue Treeselect 树形下拉框:获取选中节点的ids和lables操作
Aug 15 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预定义常量
2006/12/25 PHP
在mysql数据库原有字段后增加新内容
2009/11/26 PHP
PHP中echo,print_r与var_dump区别分析
2014/09/29 PHP
基础的WordPress插件制作教程
2015/11/24 PHP
php使用正则表达式去掉html中的注释方法
2016/11/03 PHP
PHP实现压缩图片尺寸并转为jpg格式的方法示例
2018/05/10 PHP
php连接mysql数据库最简单的实现方法
2019/09/24 PHP
列表内容的选择
2006/06/30 Javascript
Ext第一周 史上最强学习笔记---GridPanel(基础篇)
2008/12/29 Javascript
JavaScript 对象成员的可见性说明
2009/10/16 Javascript
javascript针对DOM的应用分析(四)
2012/04/15 Javascript
js中top的作用深入剖析
2014/03/04 Javascript
深入理解js中this的用法
2016/05/28 Javascript
ES6入门教程之Class和Module详解
2017/05/17 Javascript
AngularJS自定义过滤器用法经典实例总结
2018/05/17 Javascript
jQuery.parseJSON()函数详解
2019/02/28 jQuery
JS中的函数与对象的创建方式
2019/05/12 Javascript
在Python中使用正则表达式的方法
2015/08/13 Python
python读取视频流提取视频帧的两种方法
2020/10/22 Python
python实现按长宽比缩放图片
2018/06/07 Python
Python3转换html到pdf的不同解决方案
2019/03/11 Python
django rest framework 实现用户登录认证详解
2019/07/29 Python
详解python中*号的用法
2019/10/21 Python
Python猜数字算法题详解
2020/03/01 Python
Python类成员继承重写的实现
2020/09/16 Python
35款精致的 CSS3 和 HTML5 网页模板 推荐
2012/08/03 HTML / CSS
CSS3旋转——彩色扇子兼容firefox浏览器
2013/06/04 HTML / CSS
html5+css3之CSS中的布局与Header的实现
2014/11/21 HTML / CSS
基于HTML5+tracking.js实现刷脸支付功能
2020/04/16 HTML / CSS
如何删除一个表里面的重复行
2013/07/13 面试题
中英文自我评价语句
2013/12/20 职场文书
行政经理岗位职责
2015/04/15 职场文书
解约证明模板
2015/06/19 职场文书
《蜜蜂引路》教学反思
2016/02/22 职场文书
MySQL表锁、行锁、排它锁及共享锁的使用详解
2022/04/02 MySQL
mysql 索引的数据结构为什么要采用B+树
2022/04/26 MySQL