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模拟的QQ面板上的多级可展开的菜单
Oct 10 Javascript
Express.JS使用详解
Jul 17 Javascript
Jquery选择器中使用变量实现动态选择例子
Jul 25 Javascript
javascript每日必学之多态
Feb 23 Javascript
基于原生js淡入淡出函数封装(兼容IE)
Oct 20 Javascript
jQuery插件WebUploader实现文件上传
Nov 07 Javascript
Ajax的概述与实现过程
Nov 18 Javascript
解决ztree搜索中多级菜单展示不全问题
Jul 05 Javascript
基于vue的验证码组件的示例代码
Jan 22 Javascript
JS中实现浅拷贝和深拷贝的代码详解
Jun 05 Javascript
JavaScript自动生成 年月范围 选择功能完整示例【基于jQuery插件】
Sep 03 jQuery
微信小程序清空输入框信息与实现屏幕往上滚动的示例代码
Jun 23 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中英混合字符串截取函数代码
2011/07/17 PHP
PHP下 Mongodb 连接远程数据库的实例代码
2017/08/30 PHP
浅谈laravel框架与thinkPHP框架的区别
2019/10/23 PHP
用javascript实现分割提取页面所需内容
2007/05/09 Javascript
js 动态选中下拉框
2009/11/26 Javascript
当json键为数字时的取值方法解析
2013/11/15 Javascript
javascript实现的平方米、亩、公顷单位换算小程序
2014/08/11 Javascript
Jquery实现鼠标移动放大图片功能实例
2015/03/25 Javascript
JS实现刷新父页面不弹出提示框的方法
2016/06/22 Javascript
jQuery中checkbox反复调用attr('checked', true/false)只有第一次生效的解决方法
2016/11/16 Javascript
使用get方式提交表单在地址栏里面不显示提交信息
2017/02/21 Javascript
详解在Angularjs中ui-sref和$state.go如何传递参数
2017/04/24 Javascript
JS原生轮播图的简单实现(推荐)
2017/07/22 Javascript
AngularJs ng-change事件/指令的用法小结
2017/11/01 Javascript
vuejs中监听窗口关闭和窗口刷新事件的方法
2018/09/21 Javascript
如何实现一个简易版的vuex持久化工具
2019/09/11 Javascript
小程序自定义模板实现吸顶功能
2020/01/08 Javascript
卸载vue2.0并升级vue_cli3.0的实例讲解
2020/02/16 Javascript
深入了解Vue动态组件和异步组件
2021/01/26 Vue.js
Python中使用装饰器时需要注意的一些问题
2015/05/11 Python
PyQt5主窗口动态加载Widget实例代码
2018/02/07 Python
Python OpenCV 使用滑动条来调整函数参数的方法
2019/07/08 Python
Python中求对数方法总结
2020/03/10 Python
Python替换NumPy数组中大于某个值的所有元素实例
2020/06/08 Python
HTML5 Video/Audio播放本地文件示例介绍
2013/11/18 HTML / CSS
使用html5新特性轻松监听任何App自带返回键的示例
2018/03/13 HTML / CSS
英国音乐设备和乐器商店:Gear4music
2017/10/16 全球购物
日本索尼音乐商店:Sony Music Shop
2018/07/17 全球购物
香港通票:Hong Kong Pass
2019/02/26 全球购物
人力资源部门的主要职能
2014/02/22 职场文书
2015年教师节感恩寄语
2015/03/23 职场文书
小学生表扬稿范文
2015/05/05 职场文书
python基础之匿名函数详解
2021/04/21 Python
MySQL 那些常见的错误设计规范,你都知道吗
2021/07/16 MySQL
Django + Taro 前后端分离项目实现企业微信登录功能
2022/04/07 Python
移除Selenium中window.navigator.webdriver值
2022/06/10 Python