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 相关文章推荐
ext实现完整的登录代码
Aug 08 Javascript
jquery $.ajax()取xml数据的小问题解决方法
Nov 20 Javascript
javascript 学习笔记(六)浏览器类型及版本信息检测代码
Apr 08 Javascript
原生javaScript做得动态表格(注释写的很清楚)
Dec 29 Javascript
对Jquery中的ajax再封装,简化操作示例
Feb 12 Javascript
jquery中ajax跨域方法实例分析
Dec 18 Javascript
js中 计算两个日期间的工作日的简单实例
Aug 08 Javascript
微信小程序 WXML、WXSS 和JS介绍及详解
Oct 08 Javascript
JavaScript prototype属性详解
Oct 25 Javascript
原生JS实现自定义滚动条效果
Oct 27 Javascript
浅析Vue 和微信小程序的区别、比较
Aug 03 Javascript
JQuery Ajax跨域调用和非跨域调用问题实例分析
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中修改浏览器的User-Agent来伪装你的浏览器和操作系统
2011/07/29 PHP
ThinkPHP中Session用法详解
2014/11/29 PHP
php生成毫秒时间戳的实例讲解
2017/09/22 PHP
php 下 html5 XHR2 + FormData + File API 上传文件操作实例分析
2020/02/28 PHP
用YUI做了个标签浏览效果
2007/02/20 Javascript
让FireFox支持innerText的实现代码
2009/12/01 Javascript
Prototype源码浅析 String部分(三)之HTML字符串处理
2012/01/15 Javascript
JavaScript中的运算符种类及其规则介绍
2013/09/26 Javascript
php显示当前文件所在的文件以及文件夹所有文件以树形展开
2013/12/13 Javascript
js键盘上下左右键怎么触发function(实例讲解)
2013/12/14 Javascript
JavaScript里四舍五入函数round用法实例
2015/04/06 Javascript
异步JavaScript编程中的Promise使用方法
2015/07/28 Javascript
jquery.validate表单验证插件使用方法解析
2016/11/07 Javascript
jquery实现超简单的瀑布流布局【推荐】
2017/03/08 Javascript
Vue.js实战之Vuex的入门教程
2017/04/01 Javascript
Grunt针对静态文件的压缩,版本控制打包的实例讲解
2017/09/29 Javascript
详解webpack的proxyTable无效的解决方案
2018/06/15 Javascript
vue学习笔记五:在vue项目里面使用引入公共方法详解
2019/04/04 Javascript
Vue的data、computed、watch源码浅谈
2020/04/04 Javascript
JS实现电脑虚拟键盘打字测试
2020/06/24 Javascript
使用Python压缩和解压缩zip文件的教程
2015/05/06 Python
python 调用win32pai 操作cmd的方法
2017/05/28 Python
使用 Python 实现微信群友统计器的思路详解
2018/09/26 Python
Python文件循环写入行时防止覆盖的解决方法
2018/11/09 Python
Python中list循环遍历删除数据的正确方法
2019/09/02 Python
python实现自动化报表功能(Oracle/plsql/Excel/多线程)
2019/12/02 Python
python实现同一局域网下传输图片
2020/03/20 Python
简单了解pytest测试框架setup和tearDown
2020/04/14 Python
PUMA官方商城:世界领先的运动品牌之一
2016/11/16 全球购物
J2ee常用的设计模式?说明工厂模式
2015/05/21 面试题
食品安全宣传标语
2014/06/07 职场文书
工伤事故证明
2014/10/20 职场文书
事业单位个人查摆问题及整改措施
2014/10/28 职场文书
社区党支部承诺书
2015/04/29 职场文书
Python 中数组和数字相乘时的注意事项说明
2021/05/10 Python
python爬取豆瓣电影TOP250数据
2021/05/23 Python