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 相关文章推荐
文本框文本自动补全效果示例分享
Jan 19 Javascript
JS下载文件|无刷新下载文件示例代码
Apr 17 Javascript
用js提交表单解决一个页面有多个提交按钮的问题
Sep 01 Javascript
详解 javascript中offsetleft属性的用法
Nov 11 Javascript
bootstrap中模态框、模态框的属性实例详解
Feb 17 Javascript
JS 组件系列之BootstrapTable的treegrid功能
Jun 16 Javascript
详解react内联样式使用webpack将px转rem
Sep 13 Javascript
Layui多选只有最后一个值的解决方法
Sep 02 Javascript
小程序实现日历左右滑动效果
Oct 21 Javascript
vue  elementUI 表单嵌套验证的实例代码
Nov 06 Javascript
JS实现可控制的进度条
Mar 25 Javascript
vue 实现锚点功能操作
Aug 10 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
PHP分页显示制作详细讲解
2006/10/09 PHP
php生成图形验证码几种方法小结
2013/08/15 PHP
在CentOS上搭建LAMP+vsftpd环境的简单指南
2015/08/01 PHP
改版了网上的一个js操作userdata
2007/04/27 Javascript
asp 取文本框名称代码
2008/12/02 Javascript
Javascript 构造函数,公有,私有特权和静态成员定义方法
2009/11/30 Javascript
javascript中使用正则计算中文长度的例子
2014/04/29 Javascript
网页实时显示服务器时间和javscript自运行时钟
2014/06/09 Javascript
jQuery中:submit选择器用法实例
2015/01/03 Javascript
asp.net+js实现金额格式化
2015/02/27 Javascript
javascript使用shift+click实现选择和反选checkbox的方法
2015/05/04 Javascript
JS+DIV+CSS实现的经典标签切换效果代码
2015/09/14 Javascript
浅析BootStrap模态框的使用(经典)
2016/04/29 Javascript
Bootstrap表单布局
2016/07/19 Javascript
Vue.js 2.0 和 React、Augular等其他前端框架大比拼
2016/10/08 Javascript
百度地图API之百度地图退拽标记点获取经纬度的实现代码
2017/01/12 Javascript
浅谈关于JS下大批量异步任务按顺序执行解决方案一点思考
2019/01/08 Javascript
详解如何提升JSON.stringify()的性能
2019/06/12 Javascript
使用layui的router来进行传参的实现方法
2019/09/06 Javascript
高性能js数组去重(12种方法,史上最全)
2019/12/21 Javascript
vue在响应头response中获取自定义headers操作
2020/07/24 Javascript
解决vuex改变了state的值,但是页面没有更新的问题
2020/11/12 Javascript
[01:32]DOTA2次级联赛——首支职业女子战队选拔赛全记录
2014/10/23 DOTA
Python实现栈的方法
2015/05/26 Python
python引入导入自定义模块和外部文件的实例
2017/07/24 Python
Python学习之Anaconda的使用与配置方法
2018/01/04 Python
python3利用tcp实现文件夹远程传输
2018/07/28 Python
python简单验证码识别的实现方法
2019/05/10 Python
Python如何将装饰器定义为类
2020/07/30 Python
美国农场商店:Blain’s Farm & Fleet
2020/01/17 全球购物
销售文员岗位职责
2013/11/29 职场文书
大学团支书的自我评价分享
2013/12/14 职场文书
培训科主任岗位职责
2014/08/08 职场文书
关于保护环境的建议书
2014/08/26 职场文书
项目经理助理岗位职责
2015/04/13 职场文书
win10频率超出范围怎么办?win10老显示超出工作频率范围的解决方法
2022/07/07 数码科技