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 相关文章推荐
文本框只能选择数据到文本框禁止手动输入
Nov 22 Javascript
jquery获得option的值和对option进行操作
Dec 13 Javascript
jquery中使用循环下拉菜单示例代码
Sep 24 Javascript
浅谈jQuery事件绑定原理
Jan 02 Javascript
js实现div层缓慢收缩与展开的方法
May 11 Javascript
JSP防止网页刷新重复提交数据的几种方法
Nov 19 Javascript
JS 实现分页打印功能
May 16 Javascript
vue使用Element组件时v-for循环里的表单项验证方法
Jun 28 Javascript
微信小程序Flex布局用法深入浅出分析
Apr 25 Javascript
AntV F2和vue-cli构建移动端可视化视图过程详解
Oct 08 Javascript
express异步函数异常捕获示例详解
Nov 30 Javascript
vue项目如何监听localStorage或sessionStorage的变化
Jan 04 Vue.js
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
《Pokemon Sword·Shield》系列WEB动画《薄明之翼》第2话声优阵容公开!
2020/03/06 日漫
PHP之数组学习
2011/05/29 PHP
php使用websocket示例详解
2014/03/12 PHP
destoon首页调用求购供应信息的地区名称的方法
2014/08/21 PHP
PHP 模拟登陆功能实例详解
2019/09/10 PHP
javascript 嵌套的函数(作用域链)
2010/03/15 Javascript
跨浏览器的 mouseenter mouseleave 以及 compareDocumentPosition的使用说明
2010/05/04 Javascript
jQuery 学习第五课 Ajax 使用说明
2010/05/17 Javascript
JQuery浮动DIV提示信息并自动隐藏的代码
2010/08/29 Javascript
ASP.NET jQuery 实例14 在ASP.NET form中校验时间范围
2012/02/03 Javascript
jquery选择器排除某个DOM元素的方法(实例演示)
2014/04/25 Javascript
浅谈javascript中的constructor
2016/06/08 Javascript
使用jQuery加载html页面到指定的div实现方法
2016/07/13 Javascript
javascript中apply/call和bind的使用
2017/02/15 Javascript
seajs下require书写约定实例分析
2018/05/16 Javascript
基于Vue 服务端Cookies删除的问题
2018/09/21 Javascript
微信小程序提取公用函数到util.js及使用方法示例
2019/01/10 Javascript
vue实现歌手列表字母排序下拉滚动条侧栏排序实时更新
2019/05/14 Javascript
jquery自定义组件实例详解
2020/12/31 jQuery
[04:02]2014DOTA2国际邀请赛 BBC每日综述中国战队将再度登顶
2014/07/21 DOTA
[01:38]完美世界高校联赛决赛花絮
2018/12/02 DOTA
[03:12]完美世界DOTA2联赛PWL DAY6集锦
2020/11/05 DOTA
python获取目录下所有文件的方法
2015/06/01 Python
Python3 queue队列模块详细介绍
2018/01/05 Python
Python中staticmethod和classmethod的作用与区别
2018/10/11 Python
详解小白之KMP算法及python实现
2019/04/04 Python
Python序列类型的打包和解包实例
2019/12/21 Python
在pycharm中创建django项目的示例代码
2020/05/28 Python
经典c++面试题五
2014/12/17 面试题
叙述DBMS对数据控制功能有哪些
2016/06/12 面试题
升职自荐书范文
2013/11/28 职场文书
保险公司开门红口号
2014/06/21 职场文书
日语专业求职信
2014/07/04 职场文书
《微笑着面对生活》优秀演讲稿范文
2014/09/23 职场文书
2015国庆节放假通知范文
2015/07/30 职场文书
vue3中provide && inject的使用
2021/07/01 Vue.js