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判断元素是否是隐藏的代码
Apr 24 Javascript
php 中序列化和json使用介绍
Jul 08 Javascript
jQuery实现类似滑动门切换效果的层切换
Sep 23 Javascript
使用jquery选择器如何获取父级元素、同级元素、子元素
May 14 Javascript
jQuery如何防止这种冒泡事件发生
Feb 27 Javascript
jQuery实现统计输入文字个数的方法
Mar 11 Javascript
javascript实现动态表头及表列的展现方法
Jul 14 Javascript
深入解析JavaScript中的arguments对象
Jun 12 Javascript
Node.js Koa2使用JWT进行鉴权的方法示例
Aug 17 Javascript
JavaScript基于数组实现的栈与队列操作示例
Dec 22 Javascript
分享JS表单验证源码(带错误提示及密码等级)
Jan 05 Javascript
javascript this指向相关问题及改变方法
Nov 19 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 字符过滤类,用于过滤各类用户输入的数据
2009/05/27 PHP
php技术实现加载字体并保存成图片
2015/07/27 PHP
微信公众平台开发之配置与请求
2015/08/26 PHP
PHP函数nl2br()与自定义函数nl2p()换行用法分析
2016/04/02 PHP
JavaScript中的isXX系列是否继续使用的分析
2011/04/16 Javascript
JS模拟面向对象全解(一、类型及传递)
2011/07/13 Javascript
javascript禁制后退键(Backspace)实例代码
2013/11/15 Javascript
用jquery写的菜单从左往右滑动出现
2014/04/11 Javascript
Sublime Text 3常用插件及安装方法
2015/12/16 Javascript
jquery+json实现分页效果
2016/03/07 Javascript
jQuery实现的网格线绘制方法
2016/06/20 Javascript
JavaScript中的对象继承关系
2016/08/01 Javascript
JavaScript编码风格指南(中文版)
2016/08/26 Javascript
使用bootstrap实现多窗口和拖动效果
2016/09/22 Javascript
JavaScript+H5实现微信摇一摇功能
2018/05/23 Javascript
vue实现引入本地json的方法分析
2018/07/12 Javascript
详解Next.js页面渲染的优化方案
2019/01/27 Javascript
vue多次循环操作示例
2019/02/08 Javascript
Nuxt.js 数据双向绑定的实现
2019/02/17 Javascript
vue日历/日程提醒/html5本地缓存功能
2019/09/02 Javascript
Vue中qs插件的使用详解
2020/02/07 Javascript
浅谈vue.watch的触发条件是什么
2020/11/07 Javascript
python基础教程之分支、循环简单用法
2016/06/16 Python
tensorflow创建变量以及根据名称查找变量
2018/03/10 Python
python将excel转换为csv的代码方法总结
2019/07/03 Python
jupyter 中文乱码设置编码格式 避免控制台输出的解决
2020/04/20 Python
将python字符串转化成长表达式的函数eval实例
2020/05/11 Python
Python tkinter界面实现历史天气查询的示例代码
2020/08/23 Python
Python selenium环境搭建实现过程解析
2020/09/08 Python
HTML table 表格边框的实现思路
2019/10/12 HTML / CSS
Java的接口和C++的虚类的相同和不同处
2014/03/27 面试题
央视元宵晚会主持串词
2014/03/25 职场文书
文明单位汇报材料
2014/12/24 职场文书
2015年汽车销售工作总结
2015/04/07 职场文书
详解盒子端CSS动画性能提升
2021/05/24 HTML / CSS
SQL Server中使用判断语句(IF ELSE/CASE WHEN )案例
2021/07/07 SQL Server