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 相关文章推荐
js中各浏览器中鼠标按键值的差异
Apr 07 Javascript
javascritp添加url参数将参数加入到url中
Sep 25 Javascript
javascript实现对表格元素进行排序操作
Nov 18 Javascript
JavaScript必知必会(十) call apply bind的用法说明
Jun 08 Javascript
Angularjs实现带查找筛选功能的select下拉框示例代码
Oct 04 Javascript
javascript实现页面滚屏效果
Jan 17 Javascript
js判断是否是手机页面
Mar 17 Javascript
vue router仿天猫底部导航栏功能
Oct 18 Javascript
JS实现图片切换效果
Nov 17 Javascript
Vue触发隐藏input file的方法实例详解
Aug 14 Javascript
vue h5移动端禁止缩放代码
Oct 28 Javascript
浅谈webpack和webpack-cli模块源码分析
Jan 19 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
外媒评选出10支2020年最受欢迎的Dota2战队
2021/03/05 DOTA
Smarty的配置与高级缓存技术分享
2012/06/05 PHP
控制PHP的输出:缓存并压缩动态页面
2013/06/11 PHP
thinkPHP5框架中widget的功能与用法详解
2018/06/11 PHP
在页面上点击任一链接时触发一个事件的代码
2007/04/07 Javascript
Javascript学习笔记 delete运算符
2011/09/13 Javascript
Javascript无阻塞加载具体方式
2013/06/28 Javascript
js判断上传文件的类型和大小示例代码
2013/10/18 Javascript
js动态移动滚动条至底部示例代码
2014/04/24 Javascript
ajax+jQuery实现级联显示地址的方法
2015/05/06 Javascript
JS动态插入并立即执行回调函数的方法
2016/04/21 Javascript
微信小程序 开发之快递查询功能的实现
2017/01/09 Javascript
微信小程序实战之自定义模态弹窗(8)
2017/04/18 Javascript
vue中实现滚动加载更多的示例
2017/11/08 Javascript
Vue精简版风格指南(推荐)
2018/01/30 Javascript
详解Vue中使用Axios拦截器
2019/04/22 Javascript
Emberjs 通过 axios 下载文件的方法
2019/09/03 Javascript
koa-passport实现本地验证的方法示例
2020/02/20 Javascript
Vue 同步异步存值取值实现案例
2020/08/05 Javascript
Python实现在tkinter中使用matplotlib绘制图形的方法示例
2018/01/18 Python
深入了解和应用Python 装饰器 @decorator
2019/04/02 Python
关于python多重赋值的小问题
2019/04/17 Python
python 搜索大文件的实例代码
2019/07/08 Python
css3 flex实现div内容水平垂直居中的几种方法
2020/03/27 HTML / CSS
GEOX鞋美国官方网站:意大利会呼吸的鞋
2017/07/12 全球购物
StringBuilder和String的区别
2015/05/18 面试题
信息技术教学反思
2014/02/12 职场文书
旅游节目策划方案
2014/05/26 职场文书
红色旅游心得体会
2014/09/03 职场文书
2015年财务工作总结范文
2015/03/31 职场文书
2015年房地产个人工作总结
2015/05/26 职场文书
红白喜事主持词
2015/07/06 职场文书
幼儿园安全管理制度
2015/08/05 职场文书
读《皮囊》有感:理解是对他人的最大的善举
2019/11/14 职场文书
nginx限制并发连接请求数的方法
2021/04/01 Servers
python画条形图的具体代码
2022/04/20 Python