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 相关文章推荐
jquery创建div 实现代码
Apr 27 Javascript
用Javascript实现Sleep暂停功能代码
Sep 03 Javascript
js两行代码按指定格式输出日期时间
Oct 21 Javascript
自定义jQuery选项卡插件实例
Mar 27 Javascript
浅析JavaScript Array和string的转换(推荐)
May 20 Javascript
jQuery中的一些常见方法小结(推荐)
Jun 13 Javascript
jQuery遍历DOM的父级元素、子级元素和同级元素的方法总结
Jul 07 Javascript
JS for...in 遍历语句用法实例分析
Aug 24 Javascript
Angular获取手机验证码实现移动端登录注册功能
May 17 Javascript
原生JS实现ajax与ajax的跨域请求实例
Dec 01 Javascript
react-native聊天室|RN版聊天App仿微信实例|RN仿微信界面
Nov 12 Javascript
Vue移动端实现图片上传及超过1M压缩上传
Dec 23 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
如何实现给定日期的若干天以后的日期
2006/10/09 PHP
php中支持多种编码的中文字符串截取函数!
2007/03/20 PHP
MySQL修改密码方法总结
2008/03/25 PHP
php xfocus防注入资料
2008/04/27 PHP
图文介绍PHP添加Redis模块及连接
2015/07/28 PHP
PHP利用Cookie设置用户30分钟未操作自动退出功能
2017/07/03 PHP
PHP7 其他语言层面的修改
2021/03/09 PHP
在JavaScript中获取请求的URL参数[正则]
2010/12/25 Javascript
UI Events 用户界面事件
2012/06/27 Javascript
Javascript实现关联数据(Linked Data)查询及注意细节
2013/02/22 Javascript
js清除input中type等于file的值域(示例代码)
2013/12/24 Javascript
jQuery自定义事件的简单实现代码
2014/01/27 Javascript
javascript为下拉列表动态添加数据项
2014/05/23 Javascript
浅析AngularJS中的指令
2016/03/20 Javascript
Bootstrap布局之栅格系统详解
2016/06/13 Javascript
js实现的页面加载完毕之前loading提示效果完整示例【附demo源码下载】
2016/08/02 Javascript
jQuery查找节点方法完整实例
2016/09/13 Javascript
jQuery获取复选框选中的当前行的某个字段的值
2017/09/15 jQuery
jQuery实现的鼠标滚轮控制图片缩放功能实例
2017/10/14 jQuery
浅谈让你的代码更简短,更整洁,更易读的ES6小技巧
2018/10/25 Javascript
vue移动端城市三级联动组件使用详解
2019/07/26 Javascript
python+opencv像素的加减和加权操作的实现
2019/07/14 Python
python3中关于excel追加写入格式被覆盖问题(实例代码)
2020/01/10 Python
基于python调用jenkins-cli实现快速发布
2020/08/14 Python
python绘制分布折线图的示例
2020/09/24 Python
英国工艺品购物网站:Minerva Crafts
2018/01/29 全球购物
Melissa鞋英国官方网站:Nonnon
2019/05/01 全球购物
法国购买二手电子产品网站:Asgoodasnew
2020/03/27 全球购物
视光学毕业生自荐书范文
2014/02/13 职场文书
2016党员干部廉洁自律心得体会
2016/01/13 职场文书
初中政治教学反思
2016/02/23 职场文书
2016年离婚协议书范文
2016/03/18 职场文书
2019年幼儿园管理条例范本!
2019/07/17 职场文书
不知如何爱孩子,这些方法教会您
2019/08/06 职场文书
Python尝试实现蒙特卡罗模拟期权定价
2022/04/21 Python
vue.js 使用原生js实现轮播图
2022/04/26 Vue.js