JavaScript实现垂直滚动条效果


Posted in Javascript onJanuary 18, 2017

本文实例为大家分享了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实现垂直滚动条效果

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

Javascript 相关文章推荐
javascript 函数式编程
Aug 16 Javascript
Query中click(),bind(),live(),delegate()的区别
Nov 19 Javascript
javascript + jquery实现定时修改文章标题
Mar 19 Javascript
解决jQuery动态获取手机屏幕高和宽的问题
May 07 Javascript
JS 打印功能代码可实现打印预览、打印设置等
Oct 31 Javascript
JavaScript的removeChild()函数用法详解
Dec 27 Javascript
简单总结JavaScript中的String字符串类型
May 26 Javascript
详解angular2采用自定义指令(Directive)方式加载jquery插件
Feb 09 Javascript
详解Javascript获取缓存和清除缓存API
May 25 Javascript
解决$store.getters调用不执行的问题
Nov 08 Javascript
vue中v-model对select的绑定操作
Aug 31 Javascript
JS绘图Flot应用图形绘制异常解决方案
Oct 16 Javascript
JavaScript实现水平进度条拖拽效果
Jan 18 #Javascript
原生js获取浏览器窗口及元素宽高常用方法集合
Jan 18 #Javascript
基于JavaScript实现窗口拖动效果
Jan 18 #Javascript
原生js实现节日时间倒计时功能
Jan 18 #Javascript
原生js实现返回顶部缓冲效果
Jan 18 #Javascript
详解jquery validate实现表单验证 (正则表达式)
Jan 18 #Javascript
原生js实现中奖信息无间隙滚动效果
Jan 18 #Javascript
You might like
PHP Class&amp;Object -- PHP 自排序二叉树的深入解析
2013/06/25 PHP
php使用str_replace实现输入框回车替换br的方法
2014/11/24 PHP
PHP使用CURL实现多线程抓取网页
2015/04/30 PHP
php创建无限级树型菜单
2015/11/05 PHP
基于PHP常用文件函数和目录函数整理
2017/08/17 PHP
PHP操作Redis常用技巧总结
2018/04/24 PHP
用jQuery实现的智能隐藏、滑动效果的返回顶部代码
2014/03/18 Javascript
每天一篇javascript学习小结(String对象)
2015/11/18 Javascript
Bootstrap入门书籍之(五)导航条、分页导航
2016/02/17 Javascript
快速掌握Node.js模块封装及使用
2016/03/21 Javascript
JS原型链怎么理解
2016/06/27 Javascript
vue组件间通信解析
2017/03/01 Javascript
vue移动端html5页面根据屏幕适配的四种解决方法
2018/10/19 Javascript
使用JavaScrip模拟实现仿京东搜索框功能
2019/10/16 Javascript
js DOM的事件常见操作实例详解
2019/12/16 Javascript
vuejs实现下拉框菜单选择
2020/10/23 Javascript
采用Psyco实现python执行速度提高到与编译语言一样的水平
2014/10/11 Python
浅谈Python单向链表的实现
2015/12/24 Python
实例解析Python中的__new__特殊方法
2016/06/02 Python
基于Django contrib Comments 评论模块(详解)
2017/12/08 Python
学习Python selenium自动化网页抓取器
2018/01/20 Python
Django跨域请求CSRF的方法示例
2018/11/11 Python
python super的使用方法及实例详解
2019/09/25 Python
Python可变对象与不可变对象原理解析
2020/02/25 Python
详解Python GUI编程之PyQt5入门到实战
2020/12/10 Python
Python列表的深复制和浅复制示例详解
2021/02/12 Python
CSS3 三维变形实现立体方块特效源码
2016/12/15 HTML / CSS
个人简历自我评价八例
2013/10/31 职场文书
大三学生入党思想汇报
2014/01/02 职场文书
暑期实践思想汇报
2014/01/06 职场文书
商场中秋节活动方案
2014/02/07 职场文书
2014年度工作总结报告
2014/12/15 职场文书
出纳试用期工作总结2015
2015/05/28 职场文书
叶问观后感
2015/06/15 职场文书
2020优秀员工演讲稿(三篇)
2019/10/17 职场文书
Python中的嵌套循环详情
2022/03/23 Python