javascript实现滚动条效果


Posted in Javascript onMarch 24, 2020

本文实例为大家分享了javascript实现滚动条效果的具体代码,供大家参考,具体内容如下

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width, initial-scale=1.0">
 <meta http-equiv="X-UA-Compatible" content="ie=edge">
 <title>Document</title>
<style>
 html, body {
  height: 100%;
  margin: 0;
 }
 #container {
  position: absolute;
  top: 50px;
  left: 100px;
  height: 400px;
  width: 150px;
  background-color: aliceblue;
  padding: 2rem;
  box-sizing: border-box;
  /*必须属性,否则给scrollTop赋值无效*/
  overflow-y: hidden;
  position: relative;
  padding-right: 30px;
 }
 .scrollbar {
  height: 50px;
  width: 10px;
  border-radius: 20px;
  background: #ccc;
  position: absolute;
  right: 0;
 }
</style>
 <script>
 window.onload = function () {
  var scrollbar = document.querySelector('.scrollbar');
  var container = scrollbar.parentNode;
  container.scrollbar = scrollbar;
  container.ratio =
   (container.scrollHeight - container.offsetHeight) / (container.offsetHeight - scrollbar.offsetHeight);
  container.addEventListener('mousewheel', function(e) {
   this.scrollTop += e.deltaY;
   this.scrollbar.style.top = (this.scrollTop + this.scrollTop / this.ratio) + 'px';
  });
  container.addEventListener('mousedown', function (e) {
   if (e.target === this.scrollbar) {
    this.prevY = e.pageY;
   }
  });
  container.addEventListener('mouseup', function (e) {
   this.prevY = null;
  });
  container.addEventListener('mousemove', function (e) {
   if (this.prevY) {
    this.scrollTop += (e.pageY - this.prevY) * this.ratio;
    this.scrollbar.style.top = (this.scrollTop + this.scrollTop / this.ratio) + 'px';
    this.prevY = e.pageY;
   }
   e.preventDefault();
  });
 }
 </script>
</head>
<body>
 <div id="container">
  <div class="scrollbar"></div>
  <p>fefe</p>
  <p>fefe</p>
  <p>fefe</p>
  <p>fefe</p>
  <p>fefe</p>
  <p>fefe</p>
  <p>fefe</p>
  <p>fefe</p>
  <p>fefe</p>
  <p>fefe</p>
  <p>fefe</p>
  <p>fefe</p>
  <p>fefe</p>
  <p>fefe</p>
  <p>fefe</p>
  <p>fefe</p>
  <p>fefe</p>
  <p>fefe</p>
  <p>fefe</p>
  <p>fefe</p>
  <p>fefe</p>
 </div>
</body>
</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js中的this关键字详解
Sep 25 Javascript
div模拟滚动条效果示例代码
Oct 16 Javascript
js中的hasOwnProperty和isPrototypeOf方法使用实例
Jun 06 Javascript
JavaScript实现LI列表数据绑定的方法
Aug 04 Javascript
jQuery Easyui实现左右布局
Jan 26 Javascript
AngularJS全局scope与Isolate scope通信用法示例
Nov 22 Javascript
vuejs开发组件分享之H5图片上传、压缩及拍照旋转的问题处理
Mar 06 Javascript
JavaScript中错误正确处理方式小结你用对了吗
Oct 10 Javascript
vuejs router history 配置到iis的方法
Sep 20 Javascript
vue自定义指令之面板拖拽的实现
Apr 14 Javascript
微信小程序云开发之使用云存储
May 17 Javascript
vue中使用WX-JSSDK的两种方法(推荐)
Jan 18 Javascript
Webpack中SplitChunksPlugin 配置参数详解
Mar 24 #Javascript
JS实现点星星消除小游戏
Mar 24 #Javascript
js实现小星星游戏
Mar 23 #Javascript
JS Array.from()将伪数组转换成数组的方法示例
Mar 23 #Javascript
Vue+elementUI实现多图片上传与回显功能(含回显后继续上传或删除)
Mar 23 #Javascript
小程序使用分包的示例代码
Mar 23 #Javascript
用JS实现选项卡
Mar 23 #Javascript
You might like
深入了解php4(1)--回到未来
2006/10/09 PHP
php中mysql模块部分功能的简单封装
2011/09/30 PHP
详解php中空字符串和0之间的关系
2016/10/23 PHP
解决Laravel 使用insert插入数据,字段created_at为0000的问题
2019/10/11 PHP
基于php解决json_encode中文UNICODE转码问题
2020/11/10 PHP
基于jquery的一个图片hover的插件
2010/04/24 Javascript
js实现iframe自动自适应高度的方法
2015/02/17 Javascript
jQuery拖拽插件gridster使用指南
2015/04/21 Javascript
理解javascript闭包
2015/12/15 Javascript
canvas绘制七巧板
2017/02/03 Javascript
Angularjs的键盘事件的绑定
2017/07/27 Javascript
vue-quill-editor实现图片上传功能
2017/08/08 Javascript
详解webpack-dev-server使用方法
2018/09/14 Javascript
JS中的算法与数据结构之栈(Stack)实例详解
2019/08/20 Javascript
[27:28]Ti4 冒泡赛第二天 iG vs NEWBEE 1
2014/07/15 DOTA
Python2.X/Python3.X中urllib库区别讲解
2017/12/19 Python
Python微信公众号开发平台
2018/01/25 Python
pandas 条件搜索返回列表的方法
2018/10/30 Python
centos6.5安装python3.7.1之后无法使用pip的解决方案
2019/02/14 Python
python lxml中etree的简单应用
2019/05/10 Python
python、Matlab求定积分的实现
2019/11/20 Python
python圣诞树编写实例详解
2020/02/13 Python
K最近邻算法(KNN)---sklearn+python实现方式
2020/02/24 Python
django rest framework 过滤时间操作
2020/07/12 Python
【HTML5】Canvas绘制简单图片教程
2016/05/13 HTML / CSS
浅析HTML5:'data-'属性的作用
2018/01/23 HTML / CSS
Lands’ End官网:经典的美国生活方式品牌
2016/08/14 全球购物
美国女性奢华品牌精品店:INTERMIX
2017/10/12 全球购物
Hunter Boots美国官方网站:赫特威灵顿雨靴
2018/06/16 全球购物
办公室秘书岗位职责范本
2014/02/11 职场文书
大学生军训自我鉴定
2014/02/12 职场文书
工程专业求职自荐书范文
2014/02/18 职场文书
模范教师材料大全
2014/12/16 职场文书
三峡人家导游词
2015/01/31 职场文书
如何拟写通知正文?
2019/04/02 职场文书
用Python将库打包发布到pypi
2021/04/13 Python