js实现的鼠标滚轮滚动切换页面效果(类似360默认页面滚动切换效果)


Posted in Javascript onJanuary 27, 2016

本文实例讲述了js实现的鼠标滚轮滚动切换页面效果的方法。分享给大家供大家参考,具体如下:

运行效果截图如下:

js实现的鼠标滚轮滚动切换页面效果(类似360默认页面滚动切换效果)

js实现的鼠标滚轮滚动切换页面效果(类似360默认页面滚动切换效果)

具体代码如下:

<!DOCTYPE html>
<html>
 <head>
  <title>wheel</title>
  <meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
  <script type="text/javascript" >
   var currentShowPageIndex = 0;
   var animateTimeout = null;
   var isWheelAnimating = false;
   var isWheelUp = function(event) {
    event = event || window.event;
    var up = true;
    if(event.wheelDelta){//IE/Opera/Chrome
     up = event.wheelDelta / 120 == 1 ? true : false;
    }else{//Firefox
     up = event.detail / 3 == 1 ? true : false;
    }
    return up;
   }
   var changeBar = function(prevIndex, index) {
    var barUl = document.getElementById('barUl');
    var barLiList = barUl.getElementsByTagName('li');
    barLiList[prevIndex].className = "";
    barLiList[index].className = "active"; 
   }
   var changePage = function(pageIndex) {
    var showPageUl = document.getElementById('wheelUl');
    changeBar(currentShowPageIndex, pageIndex);
    currentShowPageIndex = pageIndex;
    var left = -(currentShowPageIndex) * 1000;
    showPageUl.style.marginLeft = left + "px";
    return;
   }
   var animate = function(obj, mode, from, to){
    if(animateTimeout) {
     clearTimeout(animateTimeout);
    }
    if(mode == "left") {
     if(from > to) {
      from = from - 50;
      obj.style.marginLeft = (from) + "px";
      setTimeout(function(){
       animate(obj, mode, from, to);
      }, 30);
     } else {
        isWheelAnimating = false;
       }
     return;
    } 
    if(from < to) {
     from = from + 50;
     obj.style.marginLeft = (from) + "px";
     setTimeout(function(){
      animate(obj, mode, from, to);
     }, 30);
    } else {
       isWheelAnimating = false;
      }
   }
   var mouseWheel = function(event) { 
    if(isWheelAnimating) {
      return;
    }
    isWheelAnimating = true;
    var wheelUp = isWheelUp(event);
    var showPageUl = document.getElementById('wheelUl');
    var showPageUlWidth = parseInt(showPageUl.offsetWidth);
    var showPageLiList = showPageUl.getElementsByTagName('li');
    var showPageLiListLength = showPageLiList.length;
    var wheelWrapperLeft = parseInt(document.getElementById('wheelWrapper').offsetLeft);
    if(wheelUp && currentShowPageIndex < showPageLiListLength - 1) {
     changeBar(currentShowPageIndex, currentShowPageIndex + 1);
     currentShowPageIndex ++;
     var left = -(currentShowPageIndex) * 1000;
     //animate(showPageUl, "right", -(currentShowPageIndex - 1) * 1000, -(currentShowPageIndex - 1) * 1000);
     var from = -(currentShowPageIndex - 1) * 1000;
     var to = -(currentShowPageIndex) * 1000;
     animate(showPageUl, "left", from, to);
     return;
    }
    if(!wheelUp && currentShowPageIndex > 0) {
     changeBar(currentShowPageIndex, currentShowPageIndex - 1);
     currentShowPageIndex --;
     var from = -(currentShowPageIndex + 1) * 1000;
     var to = -(currentShowPageIndex) * 1000;
     animate(showPageUl, "right", from, to);
     return;
    } 
    isWheelAnimating = false;
   };
   if(document.addEventListener){
    document.addEventListener('DOMMouseScroll',function(event) { mouseWheel(event); },false);
   }
   document.onmousewheel = function(event) { mouseWheel(event); }
   window.onload = function(){
    var barUl = document.getElementById('barUl');
    var barLiList = barUl.getElementsByTagName('li');
    for(var i=0,length=barLiList.length; i<length; i++) {
     (function(index){
      barLiList[index].onclick = function(){
       changePage(index);
      };
     })(i);
    }
   }
  </script>
  <style type="text/css" >
   body { background:#494949; margin:0; }
   ul { list-style:none; margin:0; padding:0; }
   li { float:left;}
   #wheelWrapper {
    width:1000px; height:550px; margin:0 auto; 
    position:fixed; left:50%; margin-left:-505px;
    bottom:50px; overflow:hidden;
   }
   #wheelUl {
    width:5050px; height:500px;
   }
   #barUl {
    clear:both; margin:0 auto; width:550px;
    margin-top:20px; line-height:25px;
   }
   #barUl>li {
    width:100px; background:orange;
    height:25px; margin-right:10px;
    border-radius:5px; text-align:center;
    -webkit-border-radius:5px;
    -moz-border-radius:5px;
   }
   #barUl>li:hover {
    background:#C36C12;
   }
   #barUl>li[class=active] {
    background:#C36C12;
   }
   #wheelUl>li { width:1000px; }
   .wheel {
    width:994px; height:500px; background:#FAAA3C;
    border-radius:10px;
    -webkit-border-radius:10px;
    -moz-border-radius:10px;
    margin:0 auto;
    line-height:300px;
    font-size:100px;
    text-align:center;
   }
   .radius {
    border-radius:3px;
    -webkit-border-radius:3px;
    -moz-border-radius:3px;
   }
   h1 { text-align:center; color:#fff; }
  </style>
 </head>
 <body id="body">
  <h1 >ie8+,chrome,ff提供支持</h1>
  <div id="wrapper">
   <div id="wheelWrapper">
    <ul id="wheelUl" >
     <li >
      <div class="wheel">
       1_page1
      </div>
     </li>
     <li >
      <div class="wheel">
       2_page2
      </div>
     </li>
     <li >
      <div class="wheel">
       3_page3
      </div>
     </li>
     <li >
      <div class="wheel">
       4_page4
      </div>
     </li>
     <li >
      <div class="wheel">
       5_page5
      </div>
     </li>
    </ul>
    <ul id="barUl">
     <li class="active">
      1
     </li>
     <li>
      2
     </li>
     <li>
      3
     </li>
     <li>
      4
     </li>
     <li>
      5
     </li>
    </ul>
   </div>
  </div>
 </body>
</html>

希望本文所述对大家jQuery程序设计有所帮助。

Javascript 相关文章推荐
当鼠标移动到图片上时跟随鼠标显示放大的图片效果
Jun 06 Javascript
JavaScript等比例缩放图片控制超出范围的图片
Aug 06 Javascript
js表格排序实例分析(支持int,float,date,string四种数据类型)
May 06 Javascript
js+html5绘制图片到canvas的方法
Jun 05 Javascript
js+div实现文字滚动和图片切换效果代码
Aug 27 Javascript
JS原型与原型链的深入理解
Feb 15 Javascript
深入理解react-router@4.0 使用和源码解析
May 23 Javascript
JavaScript利用fetch实现异步请求的方法实例
Jul 26 Javascript
微信小程序tabBar底部导航中文注解api详解
Aug 16 Javascript
使用DataTable插件实现异步加载数据
Nov 19 Javascript
jQuery实现高度灵活的表单验证功能示例【无UI】
Apr 30 jQuery
微信小程序开发(一):服务器获取数据列表渲染操作示例
Jun 01 Javascript
AngularJS转换响应内容
Jan 27 #Javascript
jQuery+css实现的切换图片功能代码
Jan 27 #Javascript
javascript中的3种继承实现方法
Jan 27 #Javascript
jQuery+css实现的换页标签栏效果
Jan 27 #Javascript
js实现的彩色方块飞舞奇幻效果
Jan 27 #Javascript
JavaScript下的时间格式处理函数Date.prototype.format
Jan 27 #Javascript
基于JavaScript实现瀑布流效果(循环渐近)
Jan 27 #Javascript
You might like
深入解析fsockopen与pfsockopen的区别
2013/07/05 PHP
php隐藏IP地址后两位显示为星号的方法
2014/11/21 PHP
PHP使用CURL实现多线程抓取网页
2015/04/30 PHP
php使用for语句输出三角形的方法
2015/06/09 PHP
php中smarty模板条件判断用法实例
2015/06/11 PHP
用jscript实现新建和保存一个word文档
2007/06/15 Javascript
Code: write(s,d) 输出连续字符串
2007/08/19 Javascript
JS创建优美的页面滑动块效果 - Glider.js
2007/09/27 Javascript
JavaScript加密解密7种方法总结分析
2007/10/07 Javascript
Exjs 入门篇
2010/04/07 Javascript
40个有创意的jQuery图片和内容滑动及弹出插件收藏集之三
2012/01/03 Javascript
js获取会话框prompt的返回值的方法
2015/01/10 Javascript
jQuery经过一段时间自动隐藏指定元素的方法
2015/03/17 Javascript
js中获取jsp表单中radio类型的值简单实例
2016/08/15 Javascript
VUE JS 使用组件实现双向绑定的示例代码
2017/01/10 Javascript
vue 打包后的文件部署到express服务器上的方法
2017/08/09 Javascript
setTimeout时间设置为0详细解析
2018/03/13 Javascript
react.js组件实现拖拽复制和可排序的示例代码
2018/08/20 Javascript
[52:29]DOTA2上海特级锦标赛主赛事日 - 2 胜者组第一轮#3Secret VS OG第三局
2016/03/03 DOTA
详解python时间模块中的datetime模块
2016/01/13 Python
浅谈Python2获取中文文件名的编码问题
2018/01/09 Python
Django 登陆验证码和中间件的实现
2018/08/17 Python
Python chardet库识别编码原理解析
2020/02/18 Python
浅谈TensorFlow之稀疏张量表示
2020/06/30 Python
详解Python中的路径问题
2020/09/02 Python
Carter’s官方旗舰店:美国受欢迎的婴童服装品牌
2018/01/21 全球购物
工作中的自我评价如何写好
2013/10/28 职场文书
机电一体化应届生求职信范文
2014/01/24 职场文书
三月学雷锋活动总结
2014/06/26 职场文书
推广活动策划方案
2014/08/23 职场文书
离职证明范本(5篇)
2014/09/19 职场文书
消防安全培训工作总结
2015/10/23 职场文书
Python实现8种常用抽样方法
2021/06/27 Python
mysql的单列多值存储实例详解
2022/04/05 MySQL
Nginx动静分离配置实现与说明
2022/04/07 Servers
GoFrame框架数据校验之校验结果Error接口对象
2022/06/21 Golang