原生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写的一个链表实现代码
Oct 25 Javascript
jQuery使用数组编写图片无缝向左滚动
Dec 11 Javascript
js防止DIV布局滚动时闪动的解决方法
Oct 30 Javascript
JavaScript实现定时隐藏与显示图片的方法
Aug 06 Javascript
JS中使用apply方法通过不同数量的参数调用函数的方法
May 31 Javascript
jQuery+CSS3实现仿花瓣网固定顶部位置带悬浮效果的导航菜单
Sep 21 Javascript
开源免费天气预报接口API及全国所有地区代码(国家气象局提供)
Dec 26 Javascript
深入理解Javascript中的valueOf与toString
Jan 04 Javascript
深入浅析AngularJS中的一次性数据绑定 (bindonce)
May 11 Javascript
微信小程序 检查接口状态实例详解
Jun 23 Javascript
微信小程序—setTimeOut定时器的问题及解决
Jul 26 Javascript
微信小程序关键字变色实现代码实例
Dec 13 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
MySQL数据库转移,access,sql server 转 MySQL 的图文教程
2007/09/02 PHP
ThinkPHP的MVC开发机制实例解析
2014/08/23 PHP
如何使用jQuery+PHP+MySQL来实现一个在线测试项目
2015/04/26 PHP
PHP 根据key 给二维数组分组
2016/12/09 PHP
php爬取天猫和淘宝商品数据
2018/02/23 PHP
PHP基于swoole多进程操作示例
2019/08/12 PHP
jQuery 1.3 和 Validation 验证插件1.5.1
2009/07/09 Javascript
JavaScript中的几个关键概念的理解-原型链的构建
2011/05/12 Javascript
Jquery选择子控件&quot;大于号&quot;和&quot; &quot;区别介绍及使用示例
2013/06/25 Javascript
使用FlexiGrid实现Extjs表格效果方法分享
2014/12/16 Javascript
js实现鼠标悬停图片上时滚动文字说明的方法
2015/02/17 Javascript
js简单实现竖向tab选项卡的方法
2015/05/04 Javascript
纯javascript代码实现计算器功能(三种方法)
2015/09/07 Javascript
易被忽视的js事件问题总结
2016/05/14 Javascript
JS选取DOM元素的简单方法
2016/07/08 Javascript
js检测离开或刷新页面时表单数据是否更改的方法
2016/08/02 Javascript
js实现右键自定义菜单
2016/12/03 Javascript
Vue实现数字输入框中分割手机号码的示例
2017/10/10 Javascript
nodejs调取微信收货地址的方法
2017/12/20 NodeJs
Next.js实现react服务器端渲染的方法示例
2019/01/06 Javascript
一个因@click.stop引发的bug的解决
2019/01/08 Javascript
jQuery提示框插件SweetAlert用法分析
2019/08/05 jQuery
javascript设计模式 ? 抽象工厂模式原理与应用实例分析
2020/04/09 Javascript
浅谈JavaScript中等号、双等号、 三等号的区别
2020/08/06 Javascript
[38:40]2018DOTA2亚洲邀请赛 4.6淘汰赛 mineski vs LGD 第一场
2018/04/10 DOTA
Python 包含汉字的文件读写之每行末尾加上特定字符
2016/12/12 Python
Python爬虫包BeautifulSoup异常处理(二)
2018/06/17 Python
python文件写入write()的操作
2019/05/14 Python
关于Python3的import问题(pycharm可以运行命令行import错误)
2020/11/18 Python
英国专业美容产品在线:Mylee(从指甲到脱毛)
2020/07/06 全球购物
莫斯科制造商的廉价皮大衣:Fursk
2020/06/09 全球购物
.NET里面什么时候需要调用垃圾回收
2015/06/01 面试题
翻译专业应届生求职信
2013/11/23 职场文书
预备党员转正思想汇报
2014/01/12 职场文书
2015年公路养护工作总结
2015/05/13 职场文书
vue二维数组循环嵌套方式 循环数组、循环嵌套数组
2022/04/24 Vue.js