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 相关文章推荐
跨域请求之jQuery的ajax jsonp的使用解惑
Oct 09 Javascript
JS清除IE浏览器缓存的方法
Jul 26 Javascript
指定区域的图片自动按比例缩小的js代码(防止页面被图片撑破)
Feb 21 Javascript
JavaScript数组深拷贝和浅拷贝的两种方法
Apr 16 Javascript
Bootstrap每天必学之媒体对象
Nov 30 Javascript
Jsonp 关键字详解及json和jsonp的区别,ajax和jsonp的区别
Dec 30 Javascript
分析js闭包引起的事件注册问题
Mar 29 Javascript
VUE2.0+Element-UI+Echarts封装的组件实例
Mar 02 Javascript
微信小程序云开发之新手环境配置
May 16 Javascript
JS实现骰子3D旋转效果
Oct 24 Javascript
微信小程序工具函数封装
Oct 28 Javascript
jQuery实现消息弹出框效果
Dec 10 jQuery
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
PHP编程与应用
2006/10/09 PHP
yii2 modal弹窗之ActiveForm ajax表单异步验证
2016/06/13 PHP
PHP实现字符串大小写转函数的功能实例
2019/02/06 PHP
对laravel的session获取与存取方法详解
2019/10/08 PHP
JS应用之禁止抓屏、复制、打印
2008/02/21 Javascript
jQuery学习笔记之jQuery+CSS3的浏览器兼容性
2015/01/19 Javascript
jQuery简单实现隐藏以及显示特效
2015/02/26 Javascript
JS+CSS实现下拉列表框美化效果(3款)
2015/08/15 Javascript
jQuery插件之Tocify动态节点目录菜单生成器附源码下载
2016/01/08 Javascript
zTree插件下拉树使用入门教程
2016/04/11 Javascript
node中Express 动态设置端口的方法
2017/08/04 Javascript
使用cropper.js裁剪头像的实例代码
2017/09/29 Javascript
React 路由懒加载的几种实现方案
2018/10/23 Javascript
Nautil 中使用双向数据绑定的实现
2019/10/02 Javascript
JS实现手写 forEach算法示例
2020/04/29 Javascript
微信小程序连接服务器展示MQTT数据信息的实现
2020/07/14 Javascript
[00:05]ChinaJoy现场 DOTA2玩家高呼“CN DOTA BEST DOTA”
2019/08/04 DOTA
[01:27:44]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Aster BO3 第一场 1月24日
2021/03/11 DOTA
举例讲解Python中的身份运算符的使用方法
2015/10/13 Python
Django 中自定义 Admin 样式与功能的实现方法
2019/07/04 Python
PIL对上传到Django的图片进行处理并保存的实例
2019/08/07 Python
python剪切视频与合并视频的实现
2020/03/03 Python
python实现贪吃蛇双人大战
2020/04/18 Python
Python Json数据文件操作原理解析
2020/05/09 Python
Python Selenium破解滑块验证码最新版(GEETEST95%以上通过率)
2021/01/29 Python
CSS3 渐变(Gradients)之CSS3 线性渐变
2016/07/08 HTML / CSS
css3简单练习实现遨游浏览器logo的绘制
2013/01/30 HTML / CSS
日本一家专门经营各种箱包的大型网站:Traveler Store
2016/08/03 全球购物
客服实习的个人自我鉴定
2013/10/20 职场文书
办公室内勤岗位职责范本
2013/12/09 职场文书
农贸市场管理制度
2014/01/31 职场文书
网络研修随笔感言
2014/02/17 职场文书
副董事长岗位职责
2014/04/02 职场文书
通信工程专业求职信
2014/06/04 职场文书
党的群众路线领导班子整改方案
2014/09/27 职场文书
分析Netty直接内存原理及应用
2021/06/14 Java/Android