原生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 匿名函数的理解(透彻版)
Jan 28 Javascript
js中小数转换整数的方法
Jan 26 Javascript
Javascript实现苹果悬浮虚拟按钮
Apr 10 Javascript
Bootstrap 附加导航(Affix)插件实例详解
Jun 01 Javascript
Javascript类型系统之undefined和null浅析
Jul 13 Javascript
浅谈mint-ui loadmore组件注意的问题
Nov 08 Javascript
js保留两位小数方法总结
Jan 31 Javascript
JavaScript实现一个简易的计算器实例代码
May 10 Javascript
JS获取指定月份的天数两种实现方法
Jun 22 Javascript
微信小程序实现底部导航
Nov 05 Javascript
原生js实现购物车
Sep 23 Javascript
基于vuex实现购物车功能
Jan 10 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
收音机指标测试方法及仪器
2021/03/01 无线电
使用php重新实现PHP脚本引擎内置函数
2007/03/06 PHP
关于php 接口问题(php接口主要也就是运用curl,curl函数)
2013/07/01 PHP
PHP清除字符串中所有无用标签的方法
2014/12/01 PHP
Laravel中unique和exists验证规则的优化详解
2018/01/28 PHP
ThinkPHP框架下微信支付功能总结踩坑笔记
2019/04/10 PHP
thinkPHP事务操作简单案例分析
2019/10/17 PHP
Yii框架安装简明教程
2020/05/15 PHP
js字符串的各种格式的转换 ToString,Format
2011/08/08 Javascript
JavaScript中把数字转换为字符串的程序代码
2013/06/19 Javascript
jquery ajax应用中iframe自适应高度问题解决方法
2014/04/12 Javascript
百度地图api如何使用
2015/08/03 Javascript
js+css实现文字散开重组动画特效代码分享
2015/08/21 Javascript
BootStrap 智能表单实战系列(十)自动完成组件的支持
2016/06/13 Javascript
微信小程序 下拉菜单简单实例
2017/04/13 Javascript
如何从头实现一个node.js的koa框架
2019/06/17 Javascript
使用Node.js实现base64和png文件相互转换的方法
2020/03/11 Javascript
[01:05:00]2018国际邀请赛 表演赛 Pain vs OpenAI
2018/08/24 DOTA
Python实现的文本简单可逆加密算法示例
2017/05/18 Python
简单实现python进度条脚本
2017/12/18 Python
Python语言检测模块langid和langdetect的使用实例
2019/02/19 Python
详细整理python 字符串(str)与列表(list)以及数组(array)之间的转换方法
2019/08/30 Python
微软巴西官方网站:Microsoft Brasil
2019/09/26 全球购物
How TDD works
2012/09/30 面试题
JPA的优势都有哪些
2013/07/04 面试题
汉语专业应届生求职信
2013/10/01 职场文书
大学生年度自我鉴定
2013/10/31 职场文书
《新型玻璃》教学反思
2014/04/13 职场文书
幼儿园中班下学期评语
2014/04/18 职场文书
干部作风整顿自我剖析材料和整改措施
2014/09/18 职场文书
入党积极分子十八届四中全会思想汇报
2014/10/23 职场文书
2016年119消防宣传日活动总结
2016/04/05 职场文书
php微信小程序解包过程实例详解
2021/03/31 PHP
python析构函数用法及注意事项
2021/06/22 Python
Python+Selenium自动化环境搭建与操作基础详解
2022/03/13 Python
CentOS7环境下MySQL8常用命令小结
2022/06/10 Servers