zoukankan      html  css  js  c++  java
  • javascript 实现模拟滚动条,但不支持鼠标滚轮

    模拟滚动条做项目的时候,很多时候会用到,所以就写了一个这么模拟滚动条,但是不支持滚轮事件

    <!doctype html>

    <html lang="en">

    <head>

        <meta charset="UTF-8">

        <title></title>

    </head>

    <style>

    *{padding:0;margin:0;}

    .scroll{320px;margin:30px auto;}

    #boxWrap{300px;border:1px solid #ccc;height:400px;overflow: hidden;float:left;position:relative;}

    #boxInner{position:absolute;}

    #boxInner p{padding:5px; line-height:24px;text-indent:2em;}

    #rollWrap{background:#ddd;height:400px;15px;float:right;position: relative;}

    #rollInner{height:30px;100%;background:orange;position:absolute;cursor:pointer;}

    </style>

    <body>

        

        <div class="scroll">

            <div id="boxWrap">

                <div id="boxInner">

                    <p>“瘾”为何物? “瘾”是一种走火入魔的状态,由灵魂而肉体,以至灵肉无间。会过瘾的人对唯物、唯心之辩的态度是付之一笑。过瘾的那一会儿,你就是个小神仙,无所不能,无我无他,无虚无实。

    假如说生命有度,把心与身的存在状态从低到高排列成度数,那么“瘾”就是一种超乎正常的生命度。达到这种生命度安全又不碍别人事的方法挺多,但这些方法的假象是受罪。巨大的甜头就在那一点儿苦头后面。比如我酷爱长跑,要的是那终极的舒适,但那舒适的穿越几乎是以垂死的状态去获取的。

    写作之于我,也是一种秘密的过瘾。谁都说呀,歇歇吧,写那么苦图什么?过去我和他们见识一样,也认为自己挺悲壮的,整天背对世界,背对许多人间乐事在那里写。现在我发现自己并不是这么回事,其实是在偷着乐。背对世界,把所有杂念排除,把精神凝聚到白热程度,把所有的敏感都唤起来,使感觉丰满到极致。于是乎一些意外的词汇、句子在纸上出来了,它们组成了人物细节、行为,再往前逼自己一步,再越过一点儿不适,就达到了那种极端的舒适,因为自由了,为所欲为了。要说活着,这儿,你就是个小神仙,无所不能,无我无他,无虚无实。

    假如说生命有度,把心与身的存在状态从低到高排列成度数,那么“瘾”就是一种超乎正常的生命度。达到这种生命度安全又不碍别人事的方法挺多,但这些方法的假象是受罪。巨大的甜头就在那一点儿苦头后面。比如我酷爱长跑,要的是那终极的舒适,但那舒适的穿越几乎是以垂死的状态去获取的。

    写作之于我,也是一种秘密的过瘾。谁都说呀,歇歇吧,写那么苦图什么?过去我和他们见识一样,也认为自己挺悲壮的,整天背对世界,背对许多人间乐事在那里写。现在我发现自己并不是这么回事,其实是在偷着乐。背对世界,把所有杂念排除,把精神凝聚到白热程度,把所有的敏感都唤起来,使感觉丰满到极致。于是乎一些意外的词汇、句子在纸上出来了,它们组成了人物细节、行为,再往前逼自己一步,再越过一点儿不适,就达到了那种极端的舒适,因为自由了,为所欲为了。要说活着,这时的我是活到了淋漓尽致。我试着不写,可是不行,就像没醒透似的。一连多日不写,就是一连多日半打盹儿地过活,新陈代谢都不对了。出去旅行,同行的有丈夫,有时还有其他朋友。我的写作让他们都很头疼,一些计划要根据我的时间表转。他们抱怨,问我几天不写死不死得了。我说不写就是让我身上有一块痒痒,又不让我挠。哪怕早起一两个小时,我也得把过瘾的时间留出来。对我来说,生命一天不达到那个浓度、烈度,没有</p>

                </div>

            </div>

           

           <div id="rollWrap">

               <div id="rollInner"></div>

           </div>

        </div>

    </body>

    </html>

    <script>

        //获取相关的DOM元素

     with(document){

      var oBoxWrap = getElementById('boxWrap');

      //内容信息

      var oBoxInner = getElementById('boxInner');

      var oRollWrap = getElementById('rollWrap');

      //小滑块

      var oRollInner = getElementById('rollInner');

     }

     //具体使用那个小滑块来控制滚动的距离,那么拖拽的时候就必须是它在动

    oRollInner.onmousedown = function(ev){

    //事件兼容

    var oEvent = ev || event;

    //获取当前 滑块的 距离

    var disY = oEvent.clientY - oRollInner.offsetTop;

      //IE兼容问题,下面是判断浏览器是否支持 setCapture 方法

      if (oRollInner.setCapture) {

      oRollInner.onmousemove = Move;

      oRollInner.onmouseup = MoveUp;

      }else{

      document.onmousemove = Move;

        document.onmouseup = MoveUp;

      }

      

      // 移动的函数

         function Move(ev){

        var oEvent = ev || event;

        //定义距离的变量

        var t = oEvent.clientY - disY;

        //防止滑块超出距离

        if (t < 0 ) {

        t = 0;

           //假如 t 大于 滚动条宽度的时候等于滚动条宽度值

        }else if ( t > oRollWrap.offsetHeight - oRollInner.offsetHeight ){

            t =  oRollWrap.offsetHeight - oRollInner.offsetHeight;

        }

        oRollInner.style.top = t +'px';

            

             // t值 除去 滚动框的高度 减去 滚动条的高度 得到 百分值

             var scale = t / ( oRollWrap.offsetHeight - oRollInner.offsetHeight );

             

             //里面的内容滚动 ( 外面DIV高度 - 里面DIV高度 ) * 百分值 得到负数

             oBoxInner.style.top =  ( oBoxWrap.offsetHeight - oBoxInner.offsetHeight ) * scale +'px';

             

             //显示百分值

             document.title = scale;

        }

        //抬起的函数

       function MoveUp(){

           

          this.onmousemove = null;

          this.onmouseup = null;

         //IE 下 独有的

          if (oRollInner.releaseCapture) {

               oRollInner.releaseCapture();

          };

          

       }

     //IE 下  setCapture(); 阻止默认事件

      if (oRollInner.setCapture) {

        oRollInner.setCapture();

      }

        return false; 

    }

    </script>

     
  • 相关阅读:
    halcon 图像控件显示闪烁问题
    halcon中的面向对象,数据保存
    halcon图像合并(贴图到指定位置)
    如何快速创建Html头文件
    海康威视频监控设备Web查看系统(三):Web篇
    海康威视频监控设备Web查看系统(二):服务器篇
    海康威视频监控设备Web查看系统(一):概要篇
    求2个数的最小公倍数和最大公约数
    .NETCore3.0应用程序部署到CentOS7
    [转]Android Studio 1.3.1环境搭建
  • 原文地址:https://www.cnblogs.com/zion0707/p/3889353.html
Copyright © 2011-2022 走看看