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 验证上传图片大小[客户端]
Aug 01 Javascript
jquery插件之easing使用
Aug 19 Javascript
解析DHTML,JavaScript,DOM,BOM以及WEB标准的描述
Jun 19 Javascript
js操作label给label赋值及取label的值示例
Nov 07 Javascript
asm.js使用示例代码
Nov 28 Javascript
jQuery+css实现的tab切换标签(兼容各浏览器)
Jan 28 Javascript
基于JavaScript实现类似于百度学术高级检索功能
Mar 02 Javascript
onmouseover事件和onmouseout事件全面理解
Aug 15 Javascript
解决vue的 v-for 循环中图片加载路径问题
Sep 03 Javascript
小程序如何使用分包加载的实现方法
May 22 Javascript
ElementUI 修改默认样式的几种办法(小结)
Jul 29 Javascript
微信小程序实现点击页面出现文字
Sep 21 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 获取完整url地址
2008/12/20 PHP
PHP中for与foreach的区别分析
2011/03/09 PHP
php自定义类fsocket模拟post或get请求的方法
2015/07/31 PHP
PHP连接MYSQL数据库实例代码
2016/01/20 PHP
PHP常见数组函数用法小结
2016/03/21 PHP
Gambit vs CL BO3 第二场 2.13
2021/03/10 DOTA
学习jquery必备 api中英文对照的chm手册 下载
2007/05/03 Javascript
一个基于jquery的图片切换效果
2010/07/06 Javascript
jQuery实现的网页左侧在线客服效果代码
2015/10/23 Javascript
巧方法 JavaScript获取超链接的绝对URL地址
2016/06/14 Javascript
在使用JSON格式处理数据时应该注意的问题小结
2017/05/20 Javascript
基于jQuery和CSS3实现APPLE TV海报视差效果
2017/06/16 jQuery
纯js实现隔行变色效果
2017/11/29 Javascript
vue项目总结之文件夹结构配置详解
2017/12/13 Javascript
浅谈Webpack下多环境配置的思路
2018/06/27 Javascript
详解钉钉小程序组件之自定义模态框(弹窗封装实现)
2020/03/07 Javascript
浅谈vue使用axios的回调函数中this不指向vue实例,为undefined
2020/09/21 Javascript
[46:37]LGD vs TNC 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
编写Python的web框架中的Model的教程
2015/04/29 Python
200行自定义python异步非阻塞Web框架
2017/03/15 Python
对python中数据集划分函数StratifiedShuffleSplit的使用详解
2018/12/11 Python
Python功能点实现:函数级/代码块级计时器
2019/01/02 Python
python同时替换多个字符串方法示例
2019/09/17 Python
Python操作列表常用方法实例小结【创建、遍历、统计、切片等】
2019/10/25 Python
Python range与enumerate函数区别解析
2020/02/28 Python
Jogun Shop中文官网:韩国知名时尚男装网站
2016/10/12 全球购物
日本快乐生活方式购物网站:Shop Japan
2018/07/17 全球购物
网络编辑职责
2014/03/01 职场文书
2014大学班主任工作总结
2014/11/08 职场文书
2014幼儿园小班工作总结
2014/11/10 职场文书
幼儿园教师个人总结
2015/02/05 职场文书
2015年五一劳动节慰问信
2015/03/23 职场文书
小学运动会入场词
2015/07/18 职场文书
亲情作文之母爱
2019/09/25 职场文书
基于PyQT5制作一个桌面摸鱼工具
2022/02/15 Python
铁拳制作人赞《铁拳7》老头环Mod:制作精良 但别弄了
2022/04/03 其他游戏