制做滚动条

    .box {
        width: 300px;
        height: 500px;
        border: 1px solid red;
        margin: 100px;
        position: relative;
        overflow: hidden;
    }
    .content {
        padding: 5px 18px  5px 5px;
        position: absolute;
        top: 0;
        left: 0;

    }
    .scroll {
        width: 18px;
        height: 100%;
        position: absolute;
        top: 0;
        right: 0;
        background-color: #eee;

    }
    .bar {
        height: 100px;
        width: 100%;
        position: absolute;
        top: 0;
        left: 0;
        background-color: blueviolet;
        border-radius: 10px;
        cursor: pointer;

    }
       这是内容,你可以查阅。这是在做滚动条的练习。这是输入的练习文本。
       这是内容,你可以查阅。这是在做滚动条的练习。这是输入的练习文本。
       这是内容,你可以查阅。这是在做滚动条的练习。这是输入的练习文本。
       这是内容,你可以查阅。这是在做滚动条的练习。这是输入的练习文本。
       这是内容,你可以查阅。这是在做滚动条的练习。这是输入的练习文本。
       这是内容,你可以查阅。这是在做滚动条的练习。这是输入的练习文本。
       这是内容,你可以查阅。这是在做滚动条的练习。这是输入的练习文本。
       这是内容,你可以查阅。这是在做滚动条的练习。这是输入的练习文本。
       这是内容,你可以查阅。这是在做滚动条的练习。这是输入的练习文本。
       这是内容,你可以查阅。这是在做滚动条的练习。这是输入的练习文本。
       这是内容,你可以查阅。这是在做滚动条的练习。这是输入的练习文本。
       这是内容,你可以查阅。这是在做滚动条的练习。这是输入的练习文本。
       这是内容,你可以查阅。这是在做滚动条的练习。这是输入的练习文本。
       这是内容,你可以查阅。这是在做滚动条的练习。这是输入的练习文本。
       这是内容,你可以查阅。这是在做滚动条的练习。这是输入的练习文本。
       这是内容,你可以查阅。这是在做滚动条的练习。这是输入的练习文本。
       这是内容,你可以查阅。这是在做滚动条的练习。这是输入的练习文本。
       这是内容,你可以查阅。这是在做滚动条的练习。这是输入的练习文本。
       这是内容,你可以查阅。这是在做滚动条的练习。这是输入的练习文本。
       这是内容,你可以查阅。这是在做滚动条的练习。这是输入的练习文本。
       这是内容,你可以查阅。这是在做滚动条的练习。这是输入的练习文本。
       这是内容,你可以查阅。这是在做滚动条的练习。这是输入的练习文本。
       这是内容,你可以查阅。这是在做滚动条的练习。这是输入的练习文本。
       这是内容,你可以查阅。这是在做滚动条的练习。这是输入的练习文本。
       这是内容,你可以查阅。这是在做滚动条的练习。这是输入的练习文本。
       这是内容,你可以查阅。这是在做滚动条的练习。这是输入的练习文本。
       这是内容,你可以查阅。这是在做滚动条的练习。这是输入的练习文本。
       这是内容,你可以查阅。这是在做滚动条的练习。这是输入的练习文本。
       这是内容,你可以查阅。这是在做滚动条的练习。这是输入的练习文本。
       这是内容,你可以查阅。这是在做滚动条的练习。这是输入的练习文本。
      

   </div>
   <div class="scroll" id="scroll"> 
       <div class="bar" id="bar"></div>
   </div>
<script>
    // 1.根据内容的大小,计算滚动条的高度
    // 2.让滚动条能都拖拽
    // 3.当拖拽滚动条的时候,改变内容的位置
   var box = document.getElementById('box');
   var content = document.getElementById('content');
   var scroll = document.getElementById('scroll');
   var bar = document.getElementById('bar'); 
    //当内容的高度大于box的高度 ,再计算滚动条的高度,否则的话滚动条的高度为0;
    var barHeight = 0;
    if(content.scrollHeight>box.clientHeight){
        barHeight = box.clientHeight/content.scrollHeight*scroll.clientHeight; 
    }
  
      bar.style.height = barHeight+'px';

      //2.1 当鼠标按下的时候,求鼠标在滚动条中的位置
      bar.onmousedown = function (e){
          var y = e.pageY-bar.offsetTop- box.offsetTop;
      //2.2 当鼠标在页面上移动的时候,求滚动条的位置
      document.onmousemove = function (e) {
          var barY = e.pageY - y - box.offsetTop;
          barY = barY<0? 0 : barY;
          barY = barY > scroll.clientHeight - bar.clientHeight? scroll.clientHeight - bar.clientHeight: barY;
          bar.style.top = barY + 'px';
          var contentMax = content.scrollHeight - box.clientHeight;
          var barMax = scroll.clientHeight - bar.clientHeight;
          var contentY = barY/barMax * contentMax;
          content.style.top = -contentY + 'px';
      

      }

      } 
      document.onmouseup = function() {
          //移除鼠标移动的事件;
          document.onmousemove = null;
      }
      //内容滚动的距离/内容最大能滚动的距离= 滚动条滚动的距离/滚动条最大能滚动的距离
     
    
    
    </script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值