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 function使用心得
May 10 Javascript
js switch case default 的用法示例介绍
Oct 23 Javascript
node.js中的fs.rmdir方法使用说明
Dec 16 Javascript
javascript从定义到执行 你不知道的那些事
Jan 04 Javascript
详解Node.js串行化流程控制
May 04 Javascript
arcgis for js栅格图层叠加(Raster Layer)问题
Nov 22 Javascript
详解如何实现一个简单的 vuex
Feb 10 Javascript
Node.js中你不可不精的Stream(流)
Jun 08 Javascript
vue.js 实现点击展开收起动画效果
Jul 07 Javascript
微信小程序开发问题之wx.previewImage
Dec 25 Javascript
微信小程序npm引入vant-weapp的踩坑记录
Aug 01 Javascript
vue @click.native 绑定原生点击事件
Apr 22 Vue.js
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 翻页 实例代码
2009/08/07 PHP
PHP容易被忽略而出错陷阱 数字与字符串比较
2011/11/10 PHP
Yii2增加验证码步骤详解
2016/04/25 PHP
PHP模糊查询技术实例分析【附源码下载】
2019/03/07 PHP
千分位数字格式化(用逗号隔开 代码已做了修改 支持0-9位逗号隔开)的JS代码
2013/12/05 Javascript
setTimeout自动触发一个js的方法
2014/01/15 Javascript
js实现键盘Enter键提交表单的方法
2015/05/27 Javascript
Bootstrap表单布局样式代码
2016/05/31 Javascript
jQuery动态添加可拖动元素完整实例(附demo源码下载)
2016/06/21 Javascript
JavaScript兼容性总结之获取非行间样式案例
2016/08/07 Javascript
微信小程序 教程之wxapp视图容器 scroll-view
2016/10/19 Javascript
详谈Angular 2+ 的表单(一)之模板驱动型表单
2017/04/25 Javascript
Django与Vue语法的冲突问题完美解决方法
2017/12/14 Javascript
原生js调用json方法总结
2018/02/22 Javascript
在vue项目中引用Iview的方法
2018/09/14 Javascript
echarts实现折线图的拖拽效果
2019/12/19 Javascript
vue实现前端列表多条件筛选
2020/10/26 Javascript
[02:54]DOTA2英雄基础教程 暗影牧师戴泽
2013/12/05 DOTA
[57:37]EG vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
Python 执行字符串表达式函数(eval exec execfile)
2014/08/11 Python
简单的连接MySQL与Python的Bottle框架的方法
2015/04/30 Python
Python使用matplotlib简单绘图示例
2018/02/01 Python
python os.path模块常用方法实例详解
2018/09/16 Python
python 使用 requests 模块发送http请求 的方法
2018/12/09 Python
python批量修改图片尺寸,并保存指定路径的实现方法
2019/07/04 Python
Python字典推导式将cookie字符串转化为字典解析
2019/08/10 Python
Python如何省略括号方法详解
2020/03/21 Python
html5 迷宫游戏(碰撞检测)实例一
2013/07/25 HTML / CSS
在canvas上实现元素图片镜像翻转动画效果的方法
2018/03/20 HTML / CSS
Java Servlet的主要功能和作用是什么
2014/02/14 面试题
面包店的创业计划书范文
2014/01/16 职场文书
运动会入场式解说词
2014/02/18 职场文书
无刑事犯罪记录证明范本
2014/09/29 职场文书
2015年行政人事工作总结
2015/05/21 职场文书
CSS3实现三角形不断放大效果
2021/04/13 HTML / CSS
关于CSS自定义属性与前端页面的主题切换问题
2022/03/21 HTML / CSS