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 表单验证常见正则
Sep 28 Javascript
JS判断是否为数字,是否为整数,是否为浮点数的代码
Apr 24 Javascript
基于jquery实现复选框全选,反选,全不选等功能
Oct 16 Javascript
angular.js 路由及页面传参示例
Feb 24 Javascript
JS得到当前时间的方法示例
Mar 24 Javascript
js实现京东轮播图效果
Jun 30 Javascript
Vue父组件调用子组件事件方法
Feb 23 Javascript
Vue2.5通过json文件读取数据的方法
Feb 27 Javascript
详解vuex 渐进式教程实例代码
Nov 27 Javascript
Vue动态生成el-checkbox点击无法赋值的解决方法
Feb 21 Javascript
使用vue实现各类弹出框组件
Jul 03 Javascript
vue使用map代替Aarry数组循环遍历的方法
Apr 30 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
人族 TERRAN 概述
2020/03/14 星际争霸
在PHP中使用XML
2006/10/09 PHP
杏林同学录(八)
2006/10/09 PHP
CI框架Session.php源码分析
2014/11/03 PHP
php给一组指定关键词添加span标签的方法
2015/03/31 PHP
php异常处理方法实例汇总
2015/06/24 PHP
将PHP的session数据存储到数据库中的代码实例
2016/06/24 PHP
微信利用PHP创建自定义菜单的方法
2016/08/01 PHP
thinkphp5.0自定义验证规则使用方法
2017/11/16 PHP
项目中常用的JS方法整理
2015/01/30 Javascript
js enter键激发事件实例代码
2016/08/17 Javascript
bootstrap-datetimepicker实现只显示到日期的方法
2016/11/25 Javascript
JavaScript中Array对象用法实例总结
2016/11/29 Javascript
bootstrap实现动态进度条效果
2017/03/08 Javascript
关于vue.js组件数据流的问题
2017/07/26 Javascript
JavaScript引用类型之基本包装类型实例分析【Boolean、Number和String】
2018/08/09 Javascript
JS实现音量控制拖动
2020/01/15 Javascript
[04:11]DOTA2上海特级锦标赛主赛事首日TOP10
2016/03/03 DOTA
Python中解析JSON并同时进行自定义编码处理实例
2015/02/08 Python
python抓取百度首页的方法
2015/05/19 Python
Python装饰器使用你可能不知道的几种姿势
2019/10/25 Python
Django模板获取field的verbose_name实例
2020/05/19 Python
HTML5 Plus 实现手机APP拍照或相册选择图片上传功能
2016/07/13 HTML / CSS
使用纯HTML5编写一款网页上的时钟的代码分享
2015/11/16 HTML / CSS
意大利会呼吸的鞋:Geox健乐士
2017/02/12 全球购物
留学推荐信写作指南
2014/01/25 职场文书
让生命充满爱演讲稿
2014/05/10 职场文书
防灾减灾标语
2014/10/07 职场文书
三八妇女节标语
2014/10/09 职场文书
总经理岗位职责
2015/02/04 职场文书
高考作弊检讨书1500字
2015/02/16 职场文书
行政上诉状范文
2015/05/23 职场文书
2015少先队大队辅导员工作总结
2015/07/24 职场文书
幼儿园托班开学寄语(2016春季)
2015/12/03 职场文书
诉讼和解协议书
2016/03/23 职场文书
Vue Element plus使用方法梳理
2022/12/24 Vue.js