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 相关文章推荐
ppk谈JavaScript style属性
Oct 10 Javascript
jQuery 性能优化指南(2)
May 21 Javascript
jquery 跨域访问问题解决方法(笔记)
Jun 08 Javascript
Firefox中通过JavaScript复制数据到剪贴板(Copy to Clipboard 跨浏览器版)
Nov 22 Javascript
javascript实现数字倒计时特效
Mar 30 Javascript
JS中sort函数排序用法实例分析
Jun 16 Javascript
jQuery AJAX timeout 超时问题详解
Jun 21 Javascript
Javascript将双字节字符转换成单字节字符并计算长度
Jun 22 Javascript
bootstrap配合Masonry插件实现瀑布式布局
Jan 18 Javascript
Angular.JS去掉访问路径URL中的#号详解
Mar 30 Javascript
基于JavaScript判断两个对象内容是否相等
Jan 10 Javascript
JavaScript canvas基于数组生成柱状图代码实例
Mar 06 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文件向另一个地址post数据,不用表单和隐藏的变量的
2007/03/06 PHP
一些php技巧与注意事项分析
2011/02/03 PHP
PHP实现一维数组转二维数组的方法
2015/02/25 PHP
ThinkPHP V2.2说明文档没有说明的那些事实例小结
2015/07/01 PHP
PHP的文件操作与算法实现的面试题示例
2015/08/10 PHP
动态加载js文件 document.createElement
2006/10/14 Javascript
kmock javascript 单元测试代码
2011/02/06 Javascript
iframe的onload在Chrome/Opera中执行两次Bug的解决方法
2011/03/17 Javascript
html组件不可输入(只读)同时任何组件都有效
2013/04/01 Javascript
jQuery中的read和JavaScript中的onload函数的区别
2014/08/27 Javascript
jQuery中的编程范式详解
2014/12/15 Javascript
JS取得绝对路径的实现代码
2015/01/16 Javascript
分享9点个人认为比较重要的javascript 编程技巧
2015/04/27 Javascript
BootStrap中Tab页签切换实例代码
2016/05/30 Javascript
nodejs基础应用
2017/02/03 NodeJs
Bootstrap 表单验证formValidation 实现表单动态验证功能
2017/05/17 Javascript
JavaScript实现简单生成随机颜色的方法
2017/09/21 Javascript
react学习笔记之state以及setState的使用
2017/12/07 Javascript
详解Nodejs内存治理
2018/05/13 NodeJs
JS实现的冒泡排序,快速排序,插入排序算法示例
2019/03/02 Javascript
JavaScript原型继承和原型链原理详解
2020/02/04 Javascript
vue点击Dashboard不同内容 跳转到同一表格的实例
2020/11/13 Javascript
Python的Django框架中的数据库配置指南
2015/07/17 Python
Python生成随机密码的方法
2017/06/16 Python
Python tkinter模块弹出窗口及传值回到主窗口操作详解
2017/07/28 Python
python logging日志模块的详解
2017/10/29 Python
解决pyinstaller打包发布后的exe文件打开控制台闪退的问题
2019/06/21 Python
Flask之pipenv虚拟环境的实现
2019/11/26 Python
HTML5实现表单自动验证功能实例代码
2017/01/11 HTML / CSS
英国经济型酒店品牌:Travelodge
2019/12/17 全球购物
毕业生自荐信范文
2015/03/05 职场文书
商场收银员岗位职责
2015/04/07 职场文书
争做文明公民倡议书
2019/06/24 职场文书
如何让2019年上半年的工作总结更出色!
2019/07/01 职场文书
Oracle 触发器trigger使用案例
2022/02/24 Oracle
VUE解决跨域问题Access to XMLHttpRequest at
2022/05/06 Vue.js