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 相关文章推荐
ajax的hide隐藏问题解决方法
Dec 11 Javascript
JAVASCRIPT函数作用域和提前声明 分享
Aug 22 Javascript
浅谈 javascript 事件处理
Jan 04 Javascript
jquery滚动特效集锦
Jun 03 Javascript
javascript处理a标签超链接默认事件的方法
Jun 29 Javascript
使用jQuery实现Web页面换肤功能的要点解析
May 12 Javascript
JS二叉树的简单实现方法示例
Apr 05 Javascript
通过命令行创建vue项目的方法
Jul 20 Javascript
JS与jQuery判断文本框还剩多少字符可以输入的方法
Sep 01 jQuery
Easyui 关闭jquery-easui tab标签页前触发事件的解决方法
Apr 28 jQuery
webpack proxy 使用(代理的使用)
Jan 10 Javascript
jquery实现图片无缝滚动 蒙版遮蔽效果
Jan 11 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
phpMyAdmin 链接表的附加功能尚未激活的问题
2010/08/01 PHP
PHP循环函数使用介绍之PHP基础入门教程
2013/09/21 PHP
php开发时容易忘记的一些技术细节
2016/02/03 PHP
PHP数据库操作Helper类完整实例
2016/05/11 PHP
PHP+redis实现的购物车单例类示例
2019/02/02 PHP
PHP设计模式之观察者模式定义与用法分析
2019/04/04 PHP
PHP中number_format()函数的用法讲解
2019/04/08 PHP
jquery表单验证框架提供的身份证验证方法(示例代码)
2013/12/27 Javascript
jquery移除、绑定、触发元素事件使用示例详解
2014/04/10 Javascript
使用Nodejs开发微信公众号后台服务实例
2014/09/03 NodeJs
jQuery实现简单的日期输入格式化控件
2015/03/12 Javascript
JS实现仿FLASH效果的竖排导航代码
2015/09/15 Javascript
JavaScript 2048 游戏实例代码(简单易懂)
2016/03/25 Javascript
页面向下滚动ajax获取数据的实现方法(兼容手机)
2016/05/24 Javascript
微信小程序动态添加分享数据
2017/06/14 Javascript
angular或者js怎么确定选中ul中的哪几个li
2017/08/16 Javascript
jQuery实现用户信息表格的添加和删除功能
2017/09/12 jQuery
利用jqprint插件打印页面内容的实现方法
2018/01/09 Javascript
浅析Angular 实现一个repeat指令的方法
2019/07/21 Javascript
Vue 权限控制的两种方法(路由验证)
2019/08/16 Javascript
使用vue-cli3+typescript的项目模板创建工程的教程
2020/02/28 Javascript
让IDE识别webpack的别名alias的实现方法
2020/05/06 Javascript
Python2中文处理纪要的实现方法
2018/03/10 Python
pandas使用apply多列生成一列数据的实例
2018/11/28 Python
详解Django-auth-ldap 配置方法
2018/12/10 Python
解决django中ModelForm多表单组合的问题
2019/07/18 Python
win7下 python3.6 安装opencv 和 opencv-contrib-python解决 cv2.xfeatures2d.SIFT_create() 的问题
2019/10/24 Python
Python3 解决读取中文文件txt编码的问题
2019/12/20 Python
python实现密码强度校验
2020/03/18 Python
sklearn和keras的数据切分与交叉验证的实例详解
2020/06/19 Python
HTML5 中新的全局属性(整理)
2013/07/31 HTML / CSS
ECCO爱步加拿大官网:北欧丹麦鞋履及皮具品牌
2017/07/08 全球购物
股份转让协议书
2014/04/12 职场文书
乡镇遵守党的政治纪律情况对照检查材料
2014/09/26 职场文书
酒店仓管员岗位职责
2015/04/01 职场文书
python字符串拼接.join()和拆分.split()详解
2021/11/23 Python