jquery.mousewheel实现整屏翻屏效果


Posted in Javascript onAugust 30, 2015

实现整屏上下翻效果:
需加载的js

<script type="text/javascript" src="js/jquery-1.8.3.min.js"></script>
<script type="text/javascript" src="js/jquery.mousewheel.js"></script>

css样式如下:

body{padding:0;margin:0; overflow:hidden }
ul{list-style:none;}
.content{width:100%;height100%;position:relative;top:0;}
.div_01,.div_02,.div_03,.div_04{width:100%;margin:0 auto; text-align: center;}
.div_01{background: #b20909;}
.div_02{background: #0941b2;}
.div_03{background: #2db209;}
.div_04{background: #b29c09;}
.left_fixed{position:fixed;width:15px; height:100px; left:100px;top:200px;z-index:999;}
.left_fixed ul li{
  background:#000;cursor:pointer;width:15px;height: 15px;
  border-radius:15px;margin-bottom: 10px;
}
.left_fixed ul li.active{background:#fff;}

jquery代码如下:

var page=0;//翻屏变量,初始第一屏
var shakStaute = 0; //该变量作用是鼠标滑轮一直向下或者向上滑动时出现抖动现象
$(function(){
  var starttime = 0,
    endtime = 0;
  $("body").mousewheel(function(event, delta) {
    starttime = new Date().getTime(); //记录翻屏的初始时间
    if (delta < 0&& page>=0 && page<=$(".content .divsame").length-2) { 
      if (shakStaute>=0 &&(starttime == 0 || (endtime - starttime) <= -500)) { //在500ms内执行一次翻屏
        shakStaute=1;
        page++;
        renderPage(page,true); //翻屏函数
        endtime = new Date().getTime();  //记录翻屏的结束时间
      }
    } else if (delta>0 && page>=1 && shakStaute==1 && (starttime == 0 || (endtime - starttime) <= -500)) {  
      page--;
      renderPage(page,true);
      endtime = new Date().getTime();            
    }  
  });
  var div_height=$(window).height(); 
  $(".divsame").css({'height':div_height});
  $(window).resize(function(){
    div_height=$(window).height();
    $(".divsame").css({'height':div_height});
    $('.content').animate({top:-page*div_height }, 100);
  });
  
  $(".left_fixed ul li").on("click", function(){ //点击小导航也执行翻屏
    var index = $(this).index();
    if(index>0){
      shakStaute==1;
    }
    page = index;
    renderPage(page, true);
    $(".left_fixed ul li").removeClass("active");
    $(this).addClass("active");
    return false;
  });
  function renderPage(pageNumber, isScroll){  
  if (isScroll){
    $('.content').animate({top:-pageNumber*div_height }, 'slow');
    $(".left_fixed ul li").removeClass("active");
    $(".left_fixed ul li").eq(pageNumber).addClass("active");
  }   
   return;
}
})

同时也是实时响应的。

再来看一个例子

注意头部加载的js,jquery库,mousewheel.js已经实现的index.js

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<meta name="keywords" content=""/>
<meta name="description" content=""/>
<script type="text/javascript" src="js/jquery-1.8.3.min.js"></script>
<script type="text/javascript" src="js/jquery.mousewheel.js"></script>
<script type="text/javascript" src="js/index.js"></script>
<style>
  body{padding:0;margin:0; overflow:hidden }
  ul{list-style:none;}
  .div_01,.div_02,.div_03,.div_04{width:100%;margin:0 auto; text-align: center;}
  .div_01{background: #b20909;}
  .div_02{background: #0941b2;}
  .div_03{background: #2db209;}
  .div_04{background: #b29c09;}
  .left_fixed{position:fixed;width:15px; height:100px; left:100px;top:200px;z-index:999;}
  .left_fixed ul li{background:#000;cursor:pointer;width:15px;height: 15px;border-radius:15px;margin-bottom: 10px;}
  .left_fixed ul li.active{background:#fff;}
</style>
</head>
<body>
  <div class="content">
    <div class="div_01"></div>
    <div class="div_02"></div>
    <div class="div_03"></div>
    <div class="div_04"></div>
  </div>
  <div class="left_fixed">
    <ul>
      <li class="active"></li>
      <li></li>
      <li></li>
      <li></li>
    </ul>
  </div>
</body>
</html>

jquery 代码如下(index.js):

var i=0;//翻屏变量,初始第一屏
var s = 0; //该变量作用是鼠标滑轮一直向下或者向上滑动时出现抖动现象

$(function(){

  var starttime = 0,
    endtime = 0;
  $("body").mousewheel(function(event, delta) {

    starttime = new Date().getTime(); //记录翻屏的初始时间

    if (delta < 0&& i>=0 && i<=2) { 

      if (s>=0&&(starttime == 0 || (endtime - starttime) <= -500)) { //在500ms内执行一次翻屏
        s=1;
        i++;
        renderPage(i,true); //翻屏函数
        endtime = new Date().getTime(); //记录翻屏的结束时间
      }
    } else if (delta > 0&& i>=1&&s==1&& (starttime == 0 || (endtime - starttime) <= -500)) {  
      i--;
      //console.log(i);
      renderPage(i,true);
      endtime = new Date().getTime();           
    }  

  });

  var div_height=$(window).height(); 

  $(".div_01,.div_02,.div_03,.div_04").css({'height':div_height});

  $(window).resize(function(){

  var div_height=$(window).height();

  $(".div_01,.div_02,.div_03,.div_04").css({'height':div_height});

  });

  function renderPage(pageNumber, isScroll){ 
    if (isScroll){
        $('body, html').animate({scrollTop:pageNumber*div_height }, 'slow');
        $(".left_fixed ul li").removeClass("active");
        $(".left_fixed ul li").eq(pageNumber).addClass("active");
      }

     return;
    }

  $(".left_fixed ul li").on("click", function(){ //点击小导航也执行翻屏
    var index = $(this).index();
    renderPage(index, true);
    $(".left_fixed ul li").removeClass("active");
    $(this).addClass("active");
    return false;
  });
})
Javascript 相关文章推荐
jQuery事件 delegate()使用方法介绍
Oct 30 Javascript
Javascript实现鼠标右键特色菜单
Aug 04 Javascript
jQuery Mobile开发中日期插件Mobiscroll使用说明
Mar 02 Javascript
浅谈javascript中关于日期和时间的基础知识
Jul 13 Javascript
关于Sequelize连接查询时inlude中model和association的区别详解
Feb 27 Javascript
vue多种弹框的弹出形式的示例代码
Sep 18 Javascript
Vue.js在数组中插入重复数据的实现代码
Nov 17 Javascript
详解Javascript中new()到底做了些什么?
Mar 29 Javascript
详解VUE调用本地json的使用方法
May 15 Javascript
python实现迭代法求方程组的根过程解析
Nov 25 Javascript
KnockoutJS数组比较算法实例详解
Nov 25 Javascript
在Vue中创建可重用的 Transition的方法
Jun 02 Javascript
浅谈JavaScript超时调用和间歇调用
Aug 30 #Javascript
javascript中substring()、substr()、slice()的区别
Aug 30 #Javascript
IE8下jQuery改变png图片透明度时出现的黑边
Aug 30 #Javascript
javascript中sort() 方法使用详解
Aug 30 #Javascript
javascript中的正则表达式使用详解
Aug 30 #Javascript
jQuery鼠标事件汇总
Aug 30 #Javascript
简单谈谈javascript中的变量、作用域和内存问题
Aug 30 #Javascript
You might like
php把数据表导出为Excel表的最简单、最快的方法(不用插件)
2014/05/10 PHP
php中convert_uuencode()与convert_uuencode函数用法实例
2014/11/22 PHP
用php守护另一个php进程的例子
2015/02/13 PHP
谈谈从phpinfo中能获取哪些值得注意的信息
2017/03/28 PHP
PHP中ltrim()函数的用法与实例讲解
2019/03/28 PHP
node.js中的querystring.escape方法使用说明
2014/12/10 Javascript
jQuery实现tab选项卡效果的方法
2015/07/08 Javascript
jquery模拟alert的弹窗插件
2015/07/31 Javascript
JQuery菜单效果的两个实例讲解(3)
2015/09/17 Javascript
学习AngularJs:Directive指令用法(完整版)
2016/04/26 Javascript
浅谈jQuery animate easing的具体使用方法(推荐)
2016/06/17 Javascript
简单谈谈JS数组中的indexOf方法
2016/10/13 Javascript
Angularjs实现分页和分页算法的示例代码
2016/12/23 Javascript
nodejs服务搭建教程 nodejs访问本地站点文件
2017/04/07 NodeJs
微信小程序 同步请求授权的详解
2017/08/04 Javascript
jQuery ajax仿Google自动提示SearchSuggess功能示例
2019/03/28 jQuery
p5.js码绘“跳动的小正方形”的实现代码
2019/10/22 Javascript
[01:35]辉夜杯战队访谈宣传片—iG.V
2015/12/25 DOTA
[58:46]OG vs NAVI 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
python实现通过pil模块对图片格式进行转换的方法
2015/03/24 Python
python访问抓取网页常用命令总结
2017/04/11 Python
Python实现k-means算法
2018/02/23 Python
Python生成个性签名图片获取GUI过程解析
2019/12/16 Python
tensorflow将图片保存为tfrecord和tfrecord的读取方式
2020/02/17 Python
让IE支持CSS3的不完全兼容方案
2014/09/19 HTML / CSS
个人自我鉴定怎么写
2013/10/28 职场文书
酒店管理专业毕业生求职自荐信
2014/04/28 职场文书
党员民主生活会整改措施
2014/09/26 职场文书
医生见习报告范文
2014/11/03 职场文书
高三语文复习计划
2015/01/19 职场文书
写给汽车4S店的创业计划书,拿来即用!
2019/08/09 职场文书
python获取淘宝服务器时间的代码示例
2021/04/22 Python
Java面试题冲刺第十五天--设计模式
2021/08/07 面试题
Python Django获取URL中的数据详解
2021/11/01 Python
Nginx虚拟主机的搭建的实现步骤
2022/01/18 Servers
25张裸眼3D图片,带你重温童年的记忆,感受3D的魅力
2022/02/06 杂记