js滚轮事件 js自定义滚动条的实现


Posted in Javascript onJanuary 18, 2020

本文实例为大家分享了js自定义滚动条的实现的具体代码,供大家参考,具体内容如下

描述:

自定义滚动条的实现

效果:

js滚轮事件 js自定义滚动条的实现

实现:

<!DOCTYPE html>
<html lang="">
 
<head>
 <meta charset="utf-8">
 <title></title>
 <style>
  * {margin: 0;padding: 0;}
  html,body { width: 100%;height: 100%;}
  #box { width: 100%; height: 100%; overflow: hidden;}
  /*一个个划过去的页面块*/
  .ball {
   width: 100%;
   height: 500px;
   font-size:100px;
   font-weight:bold;
   color: skyblue;
   text-align: center;
   line-height:500px;
  }
 
  /*//滚动栏*/
  #scroll {
   width: 20px; height: 96%;
   position: fixed; top: 2%; right: 5px;
   border-radius: 10px; background-color: rgba(235, 233, 233, 0.5);
   z-index: 9998; opacity: 0;
  }
 
  /*//滚动栏上的小长条*/
  #scrollBar {
   position: absolute; z-index: 1;/*//定在上面*/
   width: 20px; height: 40px;
   border-radius: 10px;
   left: 0; top: 0; background-color: red;opacity: 0.6;
  }
 </style>
</head>
 
<body style="overflow:hidden;">
<div id="box">
 <div id="content">
  <!--//营造div色块交替的感觉-->
  <p class="ball" style="background-color:#656565;">1</p>
  <p class="ball" style="background-color:#ffffff;">2</p>
  <p class="ball" style="background-color:#656565;">3</p>
  <p class="ball" style="background-color:#ffffff;">4</p>
  <p class="ball" style="background-color:#656565;">5</p>
  <p class="ball" style="background-color:#ffffff;">6</p>
 </div>
</div>
<div id="scroll">
 <div id="scrollBar"></div>
</div>
</body>
 
</html>
<script type="text/javascript">
 var content = document.getElementById("content");
 var box = document.getElementById("box");
 var scroll = document.getElementById("scroll");
 var scrollBar = document.getElementById("scrollBar");
 var Step = {
  value : 0,
  size : 20,
  maxVal : Math.ceil((content.offsetHeight-document.body.offsetHeight)/20),
  getCurrentVal:function(){
   return this.value;
  },
  next:function(){
   if(this.value==this.maxVal) return;
   this.value++;
  },
  pre:function(){
   if(this.value==0) return;
   this.value--;
  },
  getDistance:function(){
   return this.getCurrentVal()*this.size;
  },
  update:function(){
   this.maxVal = Math.ceil((content.offsetHeight-document.body.offsetHeight)/this.size);
  }
 }
 
 window.addEventListener("resize",function(){
  Step.update();
 });
 
 box.addEventListener("DOMMouseScroll",scrollfunc);
 box.addEventListener("mousewheel", scrollfunc);
 function scrollfunc(e){
  if(e.type=="mousewheel"){ //非FF
   e.wheelDelta<0?Step.next():Step.pre();
  } else { //FF
   e.detail>0?Step.next():Step.pre();
  }
  document.title = Step.getCurrentVal();
  box.scrollTop = Math.min(Step.getDistance(),content.offsetHeight-document.body.offsetHeight);
  //计算滚动比例
  var percent = box.scrollTop/(content.offsetHeight-document.body.offsetHeight);
  //显示滚动条
  scroll.style.opacity = 100;
  //计算滚动条的位置
  scrollBar.style.top = (scroll.offsetHeight-scrollBar.offsetHeight)*percent + "px";
 
 }
</script>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JS 页面内容搜索,类似于 Ctrl+F功能的实现代码
Aug 13 Javascript
javascript通过class来获取元素实现代码
Feb 20 Javascript
在firefox和Chrome下关闭浏览器窗口无效的解决方法
Jan 16 Javascript
调试JavaScript中正则表达式中遇到的问题
Jan 27 Javascript
JavaScript中实现继承的三种方式和实例
Jan 29 Javascript
js控住DOM实现发布微博效果
Aug 30 Javascript
Angular X中使用ngrx的方法详解(附源码)
Jul 10 Javascript
vue中倒计时组件的实例代码
Jul 06 Javascript
脚手架vue-cli工程webpack的基本用法详解
Sep 29 Javascript
layer弹出子iframe层父子页面传值的实现方法
Nov 22 Javascript
vue实现Excel文件的上传与下载功能的两种方式
Jun 28 Javascript
JavaScript实现鼠标经过表格某行时此行变色
Nov 20 Javascript
vue实现扫码功能
Jan 17 #Javascript
js实现轮播图效果 z-index实现轮播图
Jan 17 #Javascript
js键盘事件实现人物的行走
Jan 17 #Javascript
javascript实现简易的计算器
Jan 17 #Javascript
JavaScript简易计算器制作
Jan 17 #Javascript
vue下axios拦截器token刷新机制的实例代码
Jan 17 #Javascript
js布局实现单选按钮控件
Jan 17 #Javascript
You might like
DC《小丑》11项提名领跑奥斯卡 Netflix成第92届奥斯卡提名最大赢家
2020/04/09 欧美动漫
获取用户Ip地址通用方法与常见安全隐患(HTTP_X_FORWARDED_FOR)
2013/06/01 PHP
eaglephp使用微信api接口开发微信框架
2014/01/09 PHP
PHP中遇到BOM、编码导致json_decode函数无法解析问题
2014/07/02 PHP
php生成4位数字验证码的实现代码
2015/11/23 PHP
详解Yii2.0 rules验证规则集合
2017/03/21 PHP
PHP程序员学习使用Swoole的理由
2018/06/24 PHP
PHP count()函数讲解
2019/02/03 PHP
js防止页面被iframe调用的方法
2014/10/30 Javascript
JavaScript实现简单图片翻转的方法
2015/04/17 Javascript
浅谈JavaScript字符串拼接
2015/06/25 Javascript
js实现浏览本地文件并显示扩展名的方法
2015/08/17 Javascript
谈谈impress.js初步理解
2015/09/09 Javascript
js 动态添加元素(div、li、img等)及设置属性的方法
2016/07/19 Javascript
js自调用匿名函数的三种写法(推荐)
2016/08/19 Javascript
利用jQuery的动画函数animate实现豌豆发射效果
2016/08/28 Javascript
利用JS hash制作单页Web应用的方法详解
2017/10/10 Javascript
cocos2dx+lua实现橡皮擦功能
2018/12/20 Javascript
在layui.use 中自定义 function 的正确方法
2019/09/16 Javascript
Vue实现渲染数据后控制滚动条位置(推荐)
2019/12/09 Javascript
vue页面加载时的进度条功能(实例代码)
2020/01/13 Javascript
Vue CLI4 Vue.config.js标准配置(最全注释)
2020/06/05 Javascript
Python编程实现输入某年某月某日计算出这一天是该年第几天的方法
2017/04/18 Python
python实现在一个画布上画多个子图
2020/01/19 Python
python中的测试框架
2020/11/13 Python
英国羊皮鞋类领先品牌:Just Sheepskin
2019/12/12 全球购物
计算 s=(x*y)1/2,用两个宏定义来实现
2016/08/11 面试题
经济管理专业毕业生自荐信范文
2014/01/02 职场文书
七年级政治教学反思
2014/02/03 职场文书
建筑工程造价专业自荐信
2014/07/08 职场文书
党员十八大心得体会
2014/09/12 职场文书
责任书范本大全
2015/05/11 职场文书
纯 CSS 自定义多行省略的问题(从原理到实现)
2021/11/11 HTML / CSS
用Python实现屏幕截图详解
2022/01/22 Python
分布式架构Redis中有哪些数据结构及底层实现原理
2022/03/13 Redis
VW、VH适配移动端的解决方案与常见问题
2023/05/21 HTML / CSS