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 CSS修改学习第六章 拖拽
Feb 19 Javascript
js本身的局限性 别让javascript做太多事
Mar 23 Javascript
防止jQuery ajax Load使用缓存的方法小结
Feb 22 Javascript
直接在JS里创建JSON数据然后遍历使用
Jul 25 Javascript
Bootstrap弹出框之自定义悬停框标题、内容和样式示例代码
Jul 11 Javascript
js操作二进制数据方法
Mar 03 Javascript
微信小程序实现自上而下字幕滚动
Jul 14 Javascript
详解基于mpvue微信小程序下载远程图片到本地解决思路
May 16 Javascript
js遍历详解(forEach, map, for, for...in, for...of)
Aug 28 Javascript
js基础之事件捕获与冒泡原理
Oct 09 Javascript
Vue数据双向绑定底层实现原理
Nov 22 Javascript
layui实现显示数据表格、搜索和修改功能示例
Jun 03 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
PHP 采集程序原理分析篇
2010/03/05 PHP
PH P5.2至5.5、5.6的新增功能详解
2014/07/14 PHP
yepnope.js 异步加载资源文件
2011/09/08 Javascript
基于mootools插件实现遮罩层新手引导
2012/05/24 Javascript
js 限制input只能输入数字、字母和汉字等等
2013/12/18 Javascript
js出生日期 年月日级联菜单示例代码
2014/01/10 Javascript
jQuery无刷新分页完整实例代码
2015/10/27 Javascript
jQuery使用$.ajax提交表单完整实例
2015/12/11 Javascript
动态设置form表单的action属性的值的简单方法
2016/05/25 Javascript
js调用屏幕宽度的简单方法
2016/11/14 Javascript
详解angularJs中自定义directive的数据交互
2017/01/13 Javascript
webpack项目调试以及独立打包配置文件的方法
2018/02/28 Javascript
JavaScript的Object.defineProperty详解
2018/07/09 Javascript
深入浅析Vue.js 中的 v-for 列表渲染指令
2018/11/19 Javascript
vue 2.5.1 源码学习 之Vue.extend 和 data的合并策略
2019/06/04 Javascript
解决Layui中layer报错的问题
2019/09/03 Javascript
详解vue中$nextTick和$forceUpdate的用法
2019/12/11 Javascript
js实现浏览器打印功能的示例代码
2020/07/15 Javascript
vscode自定义vue模板的实现
2021/01/27 Vue.js
[01:02:18]VGJ.S vs infamous Supermajor 败者组 BO3 第一场 6.4
2018/06/05 DOTA
解析Python中的变量、引用、拷贝和作用域的问题
2015/04/07 Python
python正则表达式爬取猫眼电影top100
2018/02/24 Python
Python实用工具FuckIt.py介绍
2019/07/02 Python
python celery分布式任务队列的使用详解
2019/07/08 Python
python颜色随机生成器的实例代码
2020/01/10 Python
Python读取多列数据以及用matplotlib制作图表方法实例
2020/09/23 Python
HTML 5.1来了 9月份正式发布 更新内容预览
2016/04/26 HTML / CSS
英国的屈臣氏:Boots博姿
2017/12/23 全球购物
优质美利奴羊毛袜,不只是徒步旅行:Darn Tough Vermont
2018/11/05 全球购物
运动鞋、街头服装、手表和手袋的实时市场:StockX
2020/11/25 全球购物
高中生学习生活的自我评价
2013/10/09 职场文书
医学检验专业个人求职信范文
2013/12/04 职场文书
致跳远、跳高运动员广播稿
2014/01/09 职场文书
大型晚会策划方案
2014/02/06 职场文书
国际商务英语专业求职信
2014/07/08 职场文书
2020年元旦祝福语录,总有适合你的
2019/12/31 职场文书