JavaScript实现垂直滚动条效果

 更新时间:2017年01月18日 17:26:00   作者:秋天1014童话  
这篇文章为大家详细主要介绍了JavaScript实现垂直滚动条效果的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了js垂直滚动条的实现代码,供大家参考,具体内容如下

1、红色盒子高度计算公式:

容器的高度 / 内容的高度 * 容器的高度

2、红色方块移动一像素 ,我们的内容盒子移动多少呢?

(内容盒子高度 - 大盒子高度) / (大盒子高度 - 红色盒子的高度) 计算倍数

(内容盒子高度 -  大盒子高度)/  (大盒子高度 - 红色盒子的高度)   * 红色盒子移动的数值

<html>
<head>
  <meta charset="UTF-8">
  <title>垂直滚动条</title>
  <style>
  *{
    padding: 0;
    margin: 0;
  }
    .box{
      width: 300px;
      height: 500px;
      border: 1px solid red;
      padding-right: 20px;
      margin: 100px;
      position: relative;
    }
    .content{
       padding: 5px 18px 10px 5px;
      position: absolute;
      left: 0;
      top: -10px;
    }
    .scroll{
      position: absolute;
      top: 0;
      right: 0;
      background-color: #ccc;
      width: 20px;
      height: 100%;
    }
    .bar{
      width: 100%;
      height: 20px;
      background-color: red;
      border-radius: 10px;
      position: absolute;
      left: 0;
      top: 0;
      cursor: pointer;
    }
  </style>  
</head>
<body>
  <div class="box" id="box">
    <div class="content">
      三观不同,一句话都嫌多。我想,人和人之间一定存在磁场这回事,沿着三观向外辐射。
   …………
 </div>
    <div class="scroll">
      <div class="bar"></div>
    </div>
  </div>
  <script>  
    var box = document.getElementById('box');
    var content = box.children[0];
    var scroll = box.children[1];
    var bar = scroll.children[0];
    //计算滚动条红色bar的长度:容器长度/内容长度 * 容器长度,,比例关系
    bar.style.height = box.offsetHeight / content.offsetHeight * box.offsetHeight +"px";
    bar.onmousedown = function(event){
      var event = event || window.event;
      var y = event.clientY - this.offsetTop;
      document.onmousemove = function(event){
        var event = event || window.event;

        var top = event.clientY - y;
        if(top < 0)
          top =0;
        else if(top > scroll.offsetHeight - bar.offsetHeight)
          top = scroll.offsetHeight - bar.offsetHeight;
        bar.style.top = top +"px";
        //(内容盒子高度 - 大盒子高度) / (大盒子高度 - 红色盒子的高度)  * 红色盒子移动的数值
        content.style.top = -(content.offsetHeight - box.offsetHeight)/(box.offsetHeight - bar.offsetHeight)*top+"px";

        window.getSelection ? window.getSelection().removeAllRanges() : document.selection.empty();  // 防止拖动滑块的时候, 选中文字
      }
    }
    document.onmouseup = function(){
      document.onmousemove = null;
    }
  </script>
</body>
</html> 

效果:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • JavaScript判断FileUpload控件上传文件类型

    JavaScript判断FileUpload控件上传文件类型

    在CS后台代码中获取FileUpload控件上传文件的类型是比较容易的!那么,能否在客户端通过JavaScript脚本判断FileUpload上传文件类型呢?答案是可以的,下面通过一个小例子为大家展示
    2015-09-09
  • js的各种排序算法实现(总结)

    js的各种排序算法实现(总结)

    下面小编就为大家带来一篇js的各种排序算法实现(总结)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-07-07
  • JS自动跳转手机移动网页的实现方法

    JS自动跳转手机移动网页的实现方法

    本文主要介绍了JS自动跳转手机移动网页的实现方法,可以通过检查 navigator.userAgent 属性来识别用户代理字符串中包含的设备信息,下面就详细的来介绍一下具体用法,感兴趣的可以了解一下
    2024-03-03
  • 快速解决js中window.location.href不工作的问题

    快速解决js中window.location.href不工作的问题

    下面小编就为大家带来一篇快速解决js中window.location.href不工作的问题。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-11-11
  • js遍历详解(forEach, map, for, for...in, for...of)

    js遍历详解(forEach, map, for, for...in, for...of)

    在本篇文章里小编给大家整理的是关于js中的各种遍历(forEach, map, for, for...in, for...of)相关知识点用法总结,需要的朋友们参考下。
    2019-08-08
  • JavaScript设置获取和设置属性的方法

    JavaScript设置获取和设置属性的方法

    这篇文章主要介绍了JavaScript设置获取和设置属性的方法,学会使用getAttribute、setAttribute的用法,需要的朋友可以参考下
    2015-03-03
  • JS延时提示框实现方法详解

    JS延时提示框实现方法详解

    这篇文章主要介绍了JS延时提示框实现方法,以实例形式较为详细的分析了JavaScript实现延时提示功能的原理与具体实现步骤,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-11-11
  • JS应用之禁止抓屏、复制、打印

    JS应用之禁止抓屏、复制、打印

    js 禁止复制js 复制js 禁止右键 复制文件js 禁止 js禁止选择 js禁止右键代码
    2008-02-02
  • JavaScript 字符串与数组转换函数[不用split与join]

    JavaScript 字符串与数组转换函数[不用split与join]

    下面的代码,不考虑他的运行效率的话,思路不错,大家可以看看,但在实际的应用中,我们仍然使用split或join来实现数组的操作。
    2009-12-12
  • 关于promise.all()的使用及说明

    关于promise.all()的使用及说明

    这篇文章主要介绍了关于promise.all()的使用及说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-04-04

最新评论