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 相关文章推荐
jQuery语法总结和注意事项小结
Nov 11 Javascript
js实现div闪烁原理及实现代码
Jun 24 Javascript
5个可以帮你理解JavaScript核心闭包和作用域的小例子
Oct 08 Javascript
JS实现单行文字不间断向上滚动的方法
Jan 29 Javascript
JavaScript使用replace函数替换字符串的方法
Apr 06 Javascript
javascript伸缩型菜单实现代码
Nov 16 Javascript
js实现不重复导入的方法
Mar 02 Javascript
详解vue mint-ui源码解析之loadmore组件
Oct 11 Javascript
解决vue脚手架项目打包后路由视图不显示的问题
Sep 20 Javascript
js实现图片3D轮播效果
Sep 21 Javascript
关于JSON解析的实现过程解析
Oct 08 Javascript
详解微信小程序入门从这里出发(登录注册、开发工具、文件及结构介绍)
Jul 21 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多文件上传类实例
2015/03/07 PHP
高质量PHP代码的50个实用技巧必备(上)
2016/01/22 PHP
php写app用的框架整理
2019/09/29 PHP
Javascript实例教程(19) 使用HoTMetal(4)
2006/12/23 Javascript
js Flash插入函数免激活代码
2009/03/31 Javascript
Extjs Gird 支持中文拼音排序实现代码
2013/04/15 Javascript
jQuery动态显示和隐藏datagrid中的某一列的方法
2013/12/11 Javascript
JS操作iframe里的dom(实例讲解)
2014/01/29 Javascript
常用的jQuery前端技巧收集
2014/12/24 Javascript
JavaScript中join()方法的使用简介
2015/06/09 Javascript
jquery easyui DataGrid简单示例
2017/01/23 Javascript
在JS中如何把毫秒转换成规定的日期时间格式实例
2017/05/11 Javascript
node跨域请求方法小结
2017/08/25 Javascript
微信小程序template模版的使用方法
2019/04/13 Javascript
微信小程序实现watch监听
2020/06/04 Javascript
[01:04]不如跳舞!DOTA2新英雄玛尔斯的欢乐日常
2019/03/11 DOTA
使用python解析xml成对应的html示例分享
2014/04/02 Python
Python中的并发编程实例
2014/07/07 Python
Python实现JSON反序列化类对象的示例
2018/01/31 Python
python使用Matplotlib画条形图
2020/03/25 Python
python模块导入的细节详解
2018/12/10 Python
详解用python生成随机数的几种方法
2019/08/04 Python
python集合删除多种方法详解
2020/02/10 Python
python GUI库图形界面开发之PyQt5切换按钮控件QPushButton详细使用方法与实例
2020/02/28 Python
详解Selenium 元素定位和WebDriver常用方法
2020/12/04 Python
HTML5微信播放全屏问题的解决方法
2017/03/09 HTML / CSS
Mankind美国/加拿大:英国领先的男士美容护发用品公司
2018/12/05 全球购物
50岁生日感言
2014/01/23 职场文书
高中体育教学反思
2014/01/24 职场文书
导师对论文的学术评语
2015/01/04 职场文书
社区党支部承诺书
2015/04/29 职场文书
在人间读书笔记
2015/06/30 职场文书
详解MindSpore自定义模型损失函数
2021/06/30 Python
Javascript 解构赋值详情
2021/11/17 Javascript
Minikube搭建Kubernetes集群
2022/03/31 Servers
Go中使用gjson来操作JSON数据的实现
2022/08/14 Golang