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延迟加载
Mar 09 Javascript
jquery ui dialog里调用datepicker的问题
Aug 06 Javascript
通过Javascript创建一个选择文件的对话框代码
Jun 16 Javascript
js实现点击切换TAB标签实例
Aug 21 Javascript
JavaScript操作class和style样式代码详解
Feb 13 Javascript
常用原生JS兼容性写法汇总
Apr 27 Javascript
JavaScript 对象字面量讲解
Jun 06 Javascript
基于vue.js轮播组件vue-awesome-swiper实现轮播图
Mar 17 Javascript
H5图片压缩与上传实例
Apr 21 Javascript
详细分析JS函数去抖和节流
Dec 05 Javascript
浅谈vue限制文本框输入数字的正确姿势
Sep 02 Javascript
react antd实现动态增减表单
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源码之 ext/mysql扩展部分
2009/07/17 PHP
php算开始时间到过期时间的相隔的天数
2011/01/12 PHP
让你成为更出色的PHP开发者的10个技巧
2011/02/25 PHP
php一些错误处理的方法与技巧总结
2013/08/10 PHP
php数组添加元素方法小结
2014/12/20 PHP
PHP函数rtrim()使用中的怪异现象分析
2017/02/24 PHP
javascript Split方法,indexOf方法、lastIndexOf 方法和substring 方法
2009/03/21 Javascript
13个绚丽的Jquery 界面设计网站推荐
2010/09/28 Javascript
jQuery源码中的chunker 正则过滤符分析
2012/07/31 Javascript
javascript中的toFixed固定小数位数 简单实例分享
2013/07/12 Javascript
使用FlexiGrid实现Extjs表格效果方法分享
2014/12/16 Javascript
jQuery定义插件的方法
2015/12/18 Javascript
JavaScript的==运算详解
2016/07/20 Javascript
分享jQuery封装好的一些常用操作
2016/07/28 Javascript
js中利用cookie实现记住密码功能
2020/08/20 Javascript
简单实现Bootstrap标签页
2020/08/09 Javascript
Bootstrap3 图片(响应式图片&amp;图片形状)
2017/01/04 Javascript
基于vue.js实现侧边菜单栏
2017/03/20 Javascript
用node和express连接mysql实现登录注册的实现代码
2017/07/05 Javascript
JS实现图片轮播效果实例详解【可自动和手动】
2019/04/04 Javascript
vuex根据不同的用户权限展示不同的路由列表功能
2019/09/20 Javascript
python轻松实现代码编码格式转换
2015/03/26 Python
python3读取excel文件只提取某些行某些列的值方法
2018/07/10 Python
修改默认的pip版本为对应python2.7的方法
2018/11/06 Python
python利用tkinter实现屏保
2019/07/30 Python
Python vtk读取并显示dicom文件示例
2020/01/13 Python
python简单利用字典破解zip文件口令
2020/09/07 Python
酒店中秋节活动方案
2014/01/31 职场文书
保安岗位职责
2014/02/21 职场文书
公司司机岗位职责范本
2014/03/03 职场文书
农林环境专业求职信
2014/03/13 职场文书
工作经常出错的检讨书
2014/09/13 职场文书
支行行长岗位职责
2015/02/15 职场文书
热血教师观后感
2015/06/10 职场文书
「地球外少年少女」BD发售宣传CM公开
2022/03/21 日漫
JavaScript架构搭建前端监控如何采集异常数据
2022/06/25 Javascript