zoukankan      html  css  js  c++  java
  • onmousewheel&DOMMouseScroll自定义滚动条

    简单的自定义滚动条效果
    js源码 适合有一定基础的菜鸟 因为我也是个菜鸟 哈哈 不多说 直接奉上代码

      1 <!DOCTYPE html>
      2 <html>
      3 <head lang="en">
      4     <meta charset="UTF-8">
      5     <title>鼠标滚轮滑动的——滚动条</title>
      6     <style>
      7         *{padding: 0; margin: 0;}
      8         #case{  332px;  margin:30px auto;}
      9         #parnte{  30px; height: 402px;  background-color: #333333; position: relative; float: right;}
     10         #div2{ 30px; height: 30px; background: #00ffff; position: absolute;}
     11         #box{ background-color:#cccccc;  300px; height:400px; border: 1px #000000 solid; overflow: hidden; position: relative; float: left;}
     12         #txt{position: absolute; left: 0; top: 0; padding: 10px 5px;}
     13     </style>
     14     <script>
     15         window.onload=function()
     16         {
     17 //          获取domElement;
     18             var oParnt = document.getElementById('parnte');
     19             var oDiv2 = document.getElementById('div2');
     20             var oBox = document.getElementById('box');
     21             var oTxt = document.getElementById('txt');
     22 
     23 //          初始化 y
     24             var disY =0;
     25 
     26 //          绑定事件 兼容主流浏览器
     27             fnAddEvent(oDiv2 ,'mousewheel' , fnMouseWheel);
     28             fnAddEvent(oDiv2 ,'DOMMouseScroll' , fnMouseWheel);
     29 
     30             fnAddEvent(oParnt ,'mousewheel' , fnMouseWheel);
     31             fnAddEvent(oParnt ,'DOMMouseScroll' , fnMouseWheel);
     32 
     33             fnAddEvent(oBox ,'mousewheel' , fnMouseWheel);
     34             fnAddEvent(oBox ,'DOMMouseScroll' , fnMouseWheel);
     35 
     36 
     37             function fnMouseWheel(ev)
     38             {
     39                 var oEvent = ev||event;
     40                 var bDown = true;
     41 //              判断滚轮 方向
     42                 bDown=oEvent.wheelDelta?oEvent.wheelDelta<0:oEvent.detail>0;
     43                 if(bDown)//IE
     44                 {
     45                     fnScope(oDiv2.offsetTop+10);
     46 
     47                 }
     48                 else//FF
     49                 {
     50                     fnScope(oDiv2.offsetTop-10);
     51                 }
     52 //                FF 下解决 自带滚动条 滚动事件
     53                 if(oEvent.preventDefault)
     54                 {
     55                     oEvent.preventDefault();
     56                 }
     57 
     58 //               IE 下解决 自带滚动条 滚动事件
     59                  return false;
     60             }
     61 
     62             oDiv2.onmousedown=function(ev)
     63             {
     64                 var oEvent =ev || event;
     65                 disY=oEvent.clientY-oDiv2.offsetTop;
     66 
     67                 if(oDiv2.setCapture)//IE
     68                 {
     69 
     70                     oDiv2.onmousemove=fnMove;
     71                     oDiv2.onmouseup=fnUp;
     72                     oDiv2.setCapture();//获取捕获pc端所有事件 解决IE下 bug
     73                 }
     74                 else//FF
     75                 {
     76                     alert('a');
     77                     document.onmousemove=fnMove;
     78                     document.onmouseup=fnUp;
     79                 }
     80                 return false;
     81             };
     82 
     83 
     84 
     85             function fnMove(ev)
     86             {
     87 
     88                 var oEvent =ev || event;
     89                 var t=oEvent.clientY-disY;
     90 
     91                 fnScope(t);
     92 
     93 
     94             }
     95 
     96             function fnUp()
     97             {
     98                 this.onmousemove=null;
     99                 this.onmouseup=null;
    100 
    101                 if(oDiv2.releaseCapture)
    102                 {
    103                     oDiv2.releaseCapture();
    104                 }
    105 
    106             }
    107 
    108 //            将限制 返回和 控制文本 滑动的 函数封装 以便 拖拽 和 滚轮 事件的 时候 计算
    109             function fnScope(t)
    110             {
    111                 if(t<0)
    112                 {
    113                     t=0;
    114                 }
    115                 else if(t>oParnt.offsetHeight-oDiv2.offsetHeight)
    116                 {
    117                     t=oParnt.offsetHeight-oDiv2.offsetHeight;
    118                 }
    119                 oDiv2.style.top=t+'px';
    120 //                获得百分比
    121                 var scale= t/(oParnt.offsetHeight-oDiv2.offsetHeight);
    122 
    123                 oTxt.style.top=-(oTxt.offsetHeight-oBox.offsetHeight)*scale+'px';
    124             }
    125 
    126         };
    127 
    128         //绑定事件
    129 
    130         function fnAddEvent(obj ,sEvent , fn)
    131         {
    132             var fnEvent=fn;
    133             if(obj.attachEvent)
    134             {
    135                 fnEvent=function(arguments)
    136                 {
    137                   fn.call(obj, arguments)
    138                 };
    139                 obj.attachEvent('on'+sEvent ,fnEvent );
    140             }
    141             else
    142             {
    143                 obj.addEventListener(sEvent ,fnEvent);
    144             }
    145 
    146             return fnEvent;
    147         }
    148     </script>
    149 </head>
    150 <body style="height: 800px;">
    151 <div id="case">
    152     <div id="parnte">
    153         <div id="div2"></div>
    154     </div>
    155 
    156     <div id="box">
    157         <div id="txt">
    158             新华网天津12月27日电  27日上午,长江水抵达南水北调中线天津市内配套工程的第一站——曹庄泵站,流向天津滨海新区的津滨水厂,并从这里进入天津的千家万户。
    159 
    160             记者站在泵站水闸处看到,尽管天津室外温度很低,但经过千里跋涉的长江水水面并无结冰,平缓流动。
    161 
    162             天津市自来水集团总工程师何文杰说,为保障各水厂切换平稳过渡、安全运行,引江水进入天津后,将在各家水厂分阶段、分步骤实施水源切换,其中,位于滨海新区的津滨水厂目前已经率先切换,该水厂覆盖的天津市东丽区、津南区及滨海新区部分区域的市民从当前开始最先喝上长江水。至2015年春节前后,天津中心城区广大市民都将喝上长江水。
    163 
    164             “南水北调中线工程建成通水后,天津将有引滦入津和南水北调两条水源,水资源短缺的局面得到缓解。”天津市南水北调办公室主任朱芳清说,“新的供水格局,为经济社会可持续发展、生态文明建设和群众生活水平的提高,提供更可靠的水资源保障。”
    165 
    166             天津是资源型严重缺水地区,水资源短缺、单一、脆弱问题突出,始终是经济社会发展的制约性因素。天津也是南水北调中线工程的主要受水区之一。
    167 
    168             记者了解到,2006年6月,天津市在中线工程沿线各省市中率先启动了南水北调配套工程建设,截至目前,直接承接引江水的天津中心城区供水工程、尔王庄水库至津滨水厂供水工程、滨海新区供水工程、西河原水枢纽泵站、西河原水枢纽泵站至宜兴埠站原水管线联通工程等5个骨干输配水工程已全部建成,累计完成投资79亿元,并如期迎来了清澈的长江水。
    169 
    170             朱芳清介绍,引江之水来之不易,天津市将加强水资源管理,落实最严格的新华网天津12月27日电  27日上午,长江水抵达南水北调中线天津市内配套工程的第一站——曹庄泵站,流向天津滨海新区的津滨水厂,并从这里进入天津的千家万户。
    171 
    172             记者站在泵站水闸处看到,尽管天津室外温度很低,但经过千里跋涉的长江水水面并无结冰,平缓流动。
    173 
    174             天津市自来水集团总工程师何文杰说,为保障各水厂切换平稳过渡、安全运行,引江水进入天津后,将在各家水厂分阶段、分步骤实施水源切换,其中,位于滨海新区的津滨水厂目前已经率先切换,该水厂覆盖的天津市东丽区、津南区及滨海新区部分区域的市民从当前开始最先喝上长江水。至2015年春节前后,天津中心城区广大市民都将喝上长江水。
    175 
    176             “南水北调中线工程建成通水后,天津将有引滦入津和南水北调两条水源,水资源短缺的局面得到缓解。”天津市南水北调办公室主任朱芳清说,“新的供水格局,为经济社会可持续发展、生态文明建设和群众生活水平的提高,提供更可靠的水资源保障。”
    177 
    178             天津是资源型严重缺水地区,水资源短缺、单一、脆弱问题突出,始终是经济社会发展的制约性因素。天津也是南水北调中线工程的主要受水区之一。
    179 
    180             记者了解到,2006年6月,天津市在中线工程沿线各省市中率先启动了南水北调配套工程建设,截至目前,直接承接引江水的天津中心城区供水工程、尔王庄水库至津滨水厂供水工程、滨海新区供水工程、西河原水枢纽泵站、西河原水枢纽泵站至宜兴埠站原水管线联通工程等5个骨干输配水工程已全部建成,累计完成投资79亿元,并如期迎来了清澈的长江水。
    181 
    182             朱芳清介绍,引江之水来之不易,天津市将加强水资源管理,落实最严格的水资源管理制度,合理配置水资源,同时强化水生态保护,高效、节约用水,把水用好、用活、用足,让宝贵的引江水促进发展、提升环境、改善民生。水资源管理制度,合理配置水资源,同时强化水生态保护,高效、节约用水,把水用好、用活、用足,让宝贵的引江水促进发展、提升环境、改善民生。
    183         </div>
    184     </div>
    185 </div>
    186 
    187 </body>
    188 </html>
  • 相关阅读:
    php 获取当前目录和当前文件夹
    学习笔记12(选做)
    学习笔记11
    OpenEuler 中C与汇编的混合编程
    OpenEuler中C语言中的函数调用测试
    学习笔记10
    电子公文传输系统验收3开发环境
    电子公文传输系统验收2功能测试
    socket编程
    socket课堂
  • 原文地址:https://www.cnblogs.com/VanqusherCsn/p/4192128.html
Copyright © 2011-2022 走看看