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 相关文章推荐
Javascript 作用域使用说明
Aug 13 Javascript
js对象的比较
Feb 26 Javascript
仅IE6/7/8中innerHTML返回值忽略英文空格的问题
Apr 07 Javascript
Extjs中ComboBoxTree实现的下拉框树效果(自写)
May 28 Javascript
js函数在frame中的相互调用详解
Mar 03 Javascript
jQuery实现鼠标滑过Div层背景变颜色的方法
Feb 17 Javascript
分享几种比较简单实用的JavaScript tabel切换
Dec 31 Javascript
JS组件Bootstrap Select2使用方法解析
May 30 Javascript
详解vue与后端数据交互(ajax):vue-resource
Mar 16 Javascript
express+mockjs实现模拟后台数据发送功能
Jan 07 Javascript
vue-cli常用设置总结
Feb 24 Javascript
JavaScript实现模态对话框实例
Jan 13 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
ftp类(myftp.php)
2006/10/09 PHP
PHP中的正规表达式(二)
2006/10/09 PHP
PHP常用函数小技巧
2008/09/11 PHP
ThinkPHP中实例Model方法的区别说明
2010/08/21 PHP
PHP 抽象方法与抽象类abstract关键字介绍及应用
2014/10/16 PHP
php实现获取文件mime类型的方法
2015/02/11 PHP
php使用curl简单抓取远程url的方法
2015/03/13 PHP
PHP树-不需要递归的实现方法
2016/06/21 PHP
PHP判断是手机端还是PC端 PHP判断是否是微信浏览器
2017/03/15 PHP
JavaScript关于select的相关操作说明
2010/01/13 Javascript
jQuery库与其他JS库冲突的解决办法
2010/02/07 Javascript
jQuery 翻牌或百叶窗效果(内容三秒自动切换)
2012/06/14 Javascript
json原理分析及实例介绍
2012/11/29 Javascript
jQuery教程 $()包装函数来实现数组元素分页效果
2013/08/13 Javascript
js 验证身份证信息有效性
2014/03/28 Javascript
移动端翻页插件dropload.js(支持Zepto和jQuery)
2016/07/27 Javascript
JS常用倒计时代码实例总结
2017/02/07 Javascript
js,jq,css多方面实现简易下拉菜单功能
2017/05/13 Javascript
vue2.0中vue-cli实现全选、单选计算总价格的实例代码
2017/07/18 Javascript
Promise.all中对于reject的处理方法
2018/08/01 Javascript
vue-cli项目修改文件热重载失效的解决方法
2018/09/19 Javascript
Ubuntu安装Jupyter Notebook教程
2017/10/18 Python
对pandas replace函数的使用方法小结
2018/05/18 Python
使用Python的SymPy库解决数学运算问题的方法
2019/03/27 Python
解决.ui文件生成的.py文件运行不出现界面的方法
2019/06/19 Python
django之对FileField字段的upload_to的设定方法
2019/07/28 Python
python中的测试框架
2020/11/13 Python
Richards网上商店:当代时尚,遍布巴西
2019/11/03 全球购物
求职简历推荐信范文
2013/12/02 职场文书
大学生创业策划书
2014/02/02 职场文书
一句话工作感言
2014/03/01 职场文书
党员干部对十八届四中全会的期盼
2014/10/17 职场文书
军训心得体会范文(2016最新篇)
2016/01/11 职场文书
详解Html5项目适配系统深色模式方案总结
2021/04/14 HTML / CSS
SpringBoot快速入门详解
2021/07/21 Java/Android
十大最强火系宝可梦,喷火龙上榜,第一名有双火属性
2022/03/18 日漫