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 相关文章推荐
js null,undefined,字符串小结
Aug 21 Javascript
基于jQuery的图片大小自动适应实现代码
Nov 17 Javascript
创建、调用JavaScript对象的方法集锦
Dec 24 Javascript
通过隐藏iframe实现无刷新上传文件操作
Mar 16 Javascript
对Js OOP编程 创建对象的一些全面理解
Jul 26 Javascript
JavaScript中清空数组的方法总结
Dec 02 Javascript
vue.js实现数据动态响应 Vue.set的简单应用
Jun 15 Javascript
select自定义小三角样式代码(实用总结)
Aug 18 Javascript
基于JavaScript实现评论框展开和隐藏功能
Aug 25 Javascript
玩转Koa之koa-router原理解析
Dec 29 Javascript
微信小程序停止其他视频播放当前视频的实例代码
Dec 25 Javascript
vue mvvm数据响应实现
Nov 11 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 操作文件的一些FAQ总结
2009/02/12 PHP
Yii学习总结之安装配置
2015/02/22 PHP
PHP SPL标准库之接口(Interface)详解
2015/05/11 PHP
PHP将数据导出Excel表中的实例(投机型)
2017/07/31 PHP
php的优点总结 php有哪些优点
2019/07/19 PHP
php+websocket 实现的聊天室功能详解
2020/05/27 PHP
新浪刚打开页面出来的全屏广告代码
2007/04/02 Javascript
看了就知道什么是JSON
2007/12/09 Javascript
jQuery下实现等待指定元素加载完毕(可改成纯js版)
2013/07/11 Javascript
javascript与有限状态机详解
2014/05/08 Javascript
jquery.ajax之beforeSend方法使用介绍
2014/12/08 Javascript
教你如何终止JQUERY的$.AJAX请求
2016/02/23 Javascript
js事件处理程序跨浏览器解决方案
2016/03/27 Javascript
jquery.cookie.js实现用户登录保存密码功能的方法
2016/04/15 Javascript
创建基于Bootstrap的下拉菜单的DropDownList的JQuery插件
2016/06/02 Javascript
Angular 4.x 动态创建表单实例
2017/04/25 Javascript
JS判断Android、iOS或浏览器的多种方法(四种方法)
2017/06/29 Javascript
深入理解Vue2.x的虚拟DOM diff原理
2017/09/27 Javascript
AngularJS实现注册表单验证功能
2017/10/16 Javascript
Vue组件化开发之通用型弹出框的实现
2020/02/28 Javascript
[01:09]模型精美,特效酷炫!TI9不朽宝藏Ⅰ鉴赏
2019/05/10 DOTA
python学习教程之Numpy和Pandas的使用
2017/09/11 Python
Python学习pygal绘制线图代码分享
2017/12/09 Python
python的re正则表达式实例代码
2018/01/24 Python
对Pytorch中nn.ModuleList 和 nn.Sequential详解
2019/08/18 Python
python爬虫开发之PyQuery模块详细使用方法与实例全解
2020/03/09 Python
Django admin管理工具TabularInline类用法详解
2020/05/14 Python
css3 旋转按钮 使用CSS3创建一个旋转可变色按钮
2012/12/31 HTML / CSS
俄罗斯马克西多姆家居用品网上商店:Максидом
2020/02/06 全球购物
报社实习生自荐信
2014/01/24 职场文书
大学生活动总结怎么写
2014/04/29 职场文书
考试诚信承诺书
2014/05/23 职场文书
电话客服专员岗位职责
2014/06/28 职场文书
实习单位指导教师评语
2014/12/30 职场文书
Redis字典实现、Hash键冲突及渐进式rehash详解
2021/09/04 Redis
MySQL实现字段分割一行转多行的示例代码
2022/07/07 MySQL