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 相关文章推荐
Javascript 日期对象Date扩展方法
May 30 Javascript
在chrome浏览器中,防止input[text]和textarea在聚焦时出现黄色边框的解决方法
May 24 Javascript
jQuery学习笔记 操作jQuery对象 文档处理
Sep 19 Javascript
jQuery手动点击实现图片轮播特效
Apr 20 Javascript
JS组件Bootstrap ContextMenu右键菜单使用方法
Apr 17 Javascript
详解JavaScript中this关键字的用法
May 26 Javascript
利用Javascript仿Excel的数据透视分析功能
Sep 07 Javascript
Vue方法与事件处理器详解
Dec 01 Javascript
原生JS写Ajax的请求函数功能
Dec 22 Javascript
基于vue cli重构多页面脚手架过程详解
Jan 23 Javascript
详解Webpack loader 之 file-loader
Nov 07 Javascript
详解jquery和vue对比
Apr 16 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+Mysql+jQuery实现发布微博程序 jQuery篇
2011/10/08 PHP
PHP排序算法的复习和总结
2012/02/15 PHP
php保存二进制原始数据为图片的程序代码
2014/10/14 PHP
PHP实现的多维数组去重操作示例
2018/07/21 PHP
JS 判断undefined的实现代码
2009/11/26 Javascript
js 变量类型转换常用函数与代码[比较全]
2009/12/01 Javascript
js 获取服务器控件值的代码
2010/03/05 Javascript
锋利的jQuery 要点归纳(三) jQuery中的事件和动画(上:事件篇)
2010/03/24 Javascript
ASP.NET jQuery 实例17 通过使用jQuery validation插件校验ListBox
2012/02/03 Javascript
JavaScript原生对象之String对象的属性和方法详解
2015/03/13 Javascript
javascript for-in有序遍历json数据并探讨各个浏览器差异
2015/11/30 Javascript
JS控制伪元素的方法汇总
2016/04/06 Javascript
详解angular中如何监控dom渲染完毕
2017/01/03 Javascript
详解如何将angular-ui的图片轮播组件封装成一个指令
2017/05/09 Javascript
Vue的轮播图组件实现方法
2018/03/03 Javascript
webpack公共组件引用路径简化小技巧
2018/06/15 Javascript
[01:02:55]CHAOS vs Mineski 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/18 DOTA
Python列表(list)常用操作方法小结
2015/02/02 Python
python导入时小括号大作用
2017/01/10 Python
Python实现获取命令行输出结果的方法
2017/06/10 Python
Python实现多进程的四种方式
2019/02/22 Python
python3.6使用tkinter实现弹跳小球游戏
2019/05/09 Python
pyinstaller参数介绍以及总结详解
2019/07/12 Python
Python 字典一个键对应多个值的方法
2020/09/29 Python
Html5游戏开发之乒乓Ping Pong游戏示例(一)
2013/01/21 HTML / CSS
面向对象编程的优势是什么
2015/12/17 面试题
解决方案设计综合面试题
2015/08/31 面试题
酒吧副总经理岗位职责
2013/12/10 职场文书
优秀毕业生找工作自荐信
2014/06/23 职场文书
社区关爱留守儿童活动方案
2014/08/22 职场文书
成本会计实训报告
2014/11/05 职场文书
2015中秋节慰问信范文
2015/03/23 职场文书
大学学生会主席竞选稿怎么写?
2019/08/19 职场文书
Go 实现英尺和米的简单单位换算方式
2021/04/29 Golang
MongoDB连接数据库并创建数据等使用方法
2021/11/27 MongoDB
React更新渲染原理深入分析
2022/12/24 Javascript