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提交整个表单元素的快捷办法
Mar 27 Javascript
通过一段代码简单说js中的this的使用
Jul 23 Javascript
js禁止页面复制功能禁用页面右键菜单示例代码
Aug 29 Javascript
JS显示日历和天气的方法
Mar 01 Javascript
JS使用eval()动态创建变量的方法
Jun 03 Javascript
AngularJS实现给动态生成的元素绑定事件的方法
Dec 14 Javascript
Js自定义多选框效果的实例代码
Jul 05 Javascript
Hexo已经看腻了,来手把手教你使用VuePress搭建个人博客
Apr 26 Javascript
vue.js动画中的js钩子函数的实现
Jul 06 Javascript
LayerClose弹窗关闭刷新方法
Aug 17 Javascript
JavaScript正则表达式验证登录实例
Mar 18 Javascript
手动实现vue2.0的双向数据绑定原理详解
Feb 06 Vue.js
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
Views rows style模板重写代码
2011/05/16 PHP
redis 队列操作的例子(php)
2012/04/12 PHP
PHP实现微信图片上传到服务器的方法示例
2017/06/29 PHP
基础的prototype.js常用函数及其用法
2007/03/10 Javascript
JavaScript replace(rgExp,fn)正则替换的用法
2010/03/04 Javascript
理解Javascript_02_理解undefined和null
2010/10/11 Javascript
jquery $.getJSON()跨域请求
2011/12/21 Javascript
js 遍历对象的属性的代码
2011/12/29 Javascript
Javascript 异步加载详解(浏览器在javascript的加载方式)
2012/05/20 Javascript
jquery click([data],fn)使用方法实例介绍
2013/07/08 Javascript
JavaScript调用客户端的可执行文件(示例代码)
2013/11/28 Javascript
利用浏览器全屏api实现js全屏
2014/01/16 Javascript
Js与下拉列表处理问题解决
2014/02/13 Javascript
详谈javascript异步编程
2016/02/21 Javascript
fullPage.js和CSS3实现全屏滚动效果
2017/05/05 Javascript
JavaScript队列函数和异步执行详解
2017/06/19 Javascript
使用selenium抓取淘宝的商品信息实例
2018/02/06 Javascript
浅谈vue单一组件下动态修改数据时的全部重渲染
2018/03/01 Javascript
解决Vue打包上线之后部分CSS不生效的问题
2019/11/12 Javascript
浅析Python中元祖、列表和字典的区别
2016/08/17 Python
Php多进程实现代码
2018/05/07 Python
使用python验证代理ip是否可用的实现方法
2018/07/25 Python
通过字符串导入 Python 模块的方法详解
2019/10/27 Python
Django CSRF认证的几种解决方案
2020/03/03 Python
给ubuntu18安装python3.7的详细教程
2020/06/08 Python
Django配置跨域并开发测试接口
2020/11/04 Python
关于多种方式完美解决Python pip命令下载第三方库的问题
2020/12/21 Python
通过HTML5规范搞定i、em、b、strong元素的区别
2017/03/04 HTML / CSS
车间副主任岗位职责
2013/12/24 职场文书
给交警的表扬信
2014/01/12 职场文书
打架检讨书2000字
2014/02/22 职场文书
风之谷观后感
2015/06/11 职场文书
Javascript中的解构赋值语法详解
2021/04/02 Javascript
Java详细解析==和equals的区别
2022/04/07 Java/Android
uniapp 微信小程序 自定义tabBar 导航
2022/04/22 Javascript
Tomcat弱口令复现及利用
2022/05/06 Servers