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 相关文章推荐
extjs 学习笔记 四 带分页的grid
Oct 20 Javascript
cument.execCommand()用法深入理解
Dec 04 Javascript
使用jQuery和PHP实现类似360功能开关效果
Feb 12 Javascript
node.js中的console.timeEnd方法使用说明
Dec 09 Javascript
JavaScript验证Email(3种方法)
Sep 21 Javascript
谈谈我对JavaScript中typeof和instanceof的深入理解
Dec 25 Javascript
jQuery实现的兼容性浮动层示例
Aug 02 Javascript
Bootstrap CSS组件之大屏幕展播
Dec 17 Javascript
Easyui在treegrid添加控件的实现方法
Jun 23 Javascript
浅谈angular2路由预加载策略
Oct 04 Javascript
vue 使某个组件不被 keep-alive 缓存的方法
Sep 21 Javascript
JavaScript实现点击出现子菜单效果
Feb 08 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
调频问题解答
2021/03/01 无线电
YB217、YB235、YB400浅听
2021/03/02 无线电
提取HTML标签
2006/10/09 PHP
php中使用parse_url()对网址进行解析的实现代码(parse_url详解)
2012/01/03 PHP
php压缩和解压缩字符串的方法
2015/03/14 PHP
PHP打印输出函数汇总
2016/08/28 PHP
PHP-FPM运行状态的实时查看及监控详解
2016/11/18 PHP
phpStudy 2016 使用教程详解(支持PHP7)
2017/10/18 PHP
JavaScript 判断指定字符串是否为有效数字
2010/05/11 Javascript
jQuery+CSS 实现随滚动条增减的汽水瓶中的液体效果
2011/09/26 Javascript
extJS中常用的4种Ajax异步提交方式
2014/03/07 Javascript
js 动态修改css文件用到了cssRule
2014/08/20 Javascript
javascript实现模拟时钟的方法
2015/05/13 Javascript
Javascript实现div的toggle效果实例分析
2015/06/09 Javascript
详解javascript中原始数据类型Null和Undefined
2015/12/17 Javascript
BootStrap智能表单demo示例详解
2016/06/13 Javascript
JavaScript中windows.open()、windows.close()方法详解
2016/07/28 Javascript
jQuery实现简易的输入框字数计数功能示例
2017/01/16 Javascript
JS正则表达式判断有效数实例代码
2017/03/13 Javascript
Angular项目从新建、打包到nginx部署全过程记录
2017/12/09 Javascript
jQuery中可见性过滤器简单用法示例
2018/03/31 jQuery
基于jquery实现左右上下移动效果
2018/05/02 jQuery
微信小程序 textarea 层级过高问题简单解决方案
2019/10/14 Javascript
Python给你的头像加上圣诞帽
2018/01/04 Python
Python类的绑定方法和非绑定方法实例解析
2020/03/04 Python
Hawes & Curtis官网:英国经典品牌
2019/07/27 全球购物
JDBC操作数据库的基本流程是什么
2014/10/28 面试题
预备党员转正思想汇报
2014/01/12 职场文书
机械设计毕业生自荐信
2014/02/02 职场文书
党的群众路线教育实践活动心得体会
2014/03/03 职场文书
小学德育工作经验交流材料
2014/05/22 职场文书
工会趣味活动方案
2014/08/18 职场文书
物业管理委托协议(2篇)
2014/09/23 职场文书
鸟的天堂导游词
2015/01/31 职场文书
面试被问select......for update会锁表还是锁行
2021/11/11 MySQL
Java中Quartz高可用定时任务快速入门
2022/04/03 Java/Android