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

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
</head>
 
<style>
 
*{padding:0;margin:0;}
.scroll{width:320px;margin:30px auto;}
#boxWrap{width: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;width:15px;float:right;position: relative;}
#rollInner{height:30px;width: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>