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 相关文章推荐
自写简单JS判断是否已经弹出页面
Oct 20 Javascript
sails框架的学习指南
Dec 22 Javascript
jQuery实现点击小图显示大图代码分享
Aug 25 Javascript
学习JavaScript设计模式之责任链模式
Jan 18 Javascript
JS创建事件的三种方法(实例代码)
May 12 Javascript
jQuery3.0中的buildFragment私有函数详解
Aug 16 Javascript
javascript正则表达式模糊匹配IP地址功能示例
Jan 06 Javascript
基于jQuery的表单填充实例
Aug 22 jQuery
javascript function(函数类型)使用与注意事项小结
Jun 10 Javascript
解决小程序无法触发SESSION问题
Feb 03 Javascript
Vue基于iview table展示图片实现点击放大
Aug 05 Javascript
JavaScript利用html5新方法操作元素类名详解
Nov 27 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/05/09 PHP
在PHP模板引擎smarty生成随机数的方法和math函数详解
2014/04/24 PHP
ThinkPHP2.0读取MSSQL提示Incorrect syntax near the keyword 'AS'的解决方法
2014/06/25 PHP
mac环境中使用brew安装php5.5.15
2014/08/18 PHP
php实现的中文分词类完整实例
2017/02/06 PHP
解决Laravel 使用insert插入数据,字段created_at为0000的问题
2019/10/11 PHP
Javascript下的keyCode键码值表
2007/04/10 Javascript
JavaScript的document对象和window对象详解
2010/12/30 Javascript
Javascript MVC框架Backbone.js详解
2014/09/18 Javascript
浅析JavaScript 调试方法和技巧
2015/10/22 Javascript
详解基于javascript实现的苹果系统底部菜单
2016/12/02 Javascript
jQuery插件MovingBoxes实现左右滑动中间放大图片效果
2017/02/28 Javascript
微信小程序手势操作之单触摸点与多触摸点
2017/03/10 Javascript
详解AngularJS ng-class样式切换
2017/06/27 Javascript
JS开发中基本数据类型具体有哪几种
2017/10/19 Javascript
基于vue开发的在线付费课程应用过程
2018/01/25 Javascript
Javasript设计模式之链式调用详解
2018/04/26 Javascript
仿iPhone通讯录制作小程序自定义选择组件的实现
2019/05/23 Javascript
VueCli4项目配置反向代理proxy的方法步骤
2020/05/17 Javascript
webpack5 联邦模块介绍详解
2020/07/08 Javascript
[03:56]还原FTP电影首映式 DOTA2群星拼出遗迹世界
2014/03/26 DOTA
教你如何在Django 1.6中正确使用 Signal
2014/06/22 Python
Python开发微信公众平台的方法详解【基于weixin-knife】
2017/07/08 Python
利用python对Excel中的特定数据提取并写入新表的方法
2018/06/14 Python
python实现根据文件关键字进行切分为多个文件的示例
2018/12/10 Python
解决python有时候import不了当前的包问题
2019/08/28 Python
django xadmin action兼容自定义model权限教程
2020/03/30 Python
使用html2canvas实现将html内容写入到canvas中生成图片
2020/01/03 HTML / CSS
英国PC组件和在线电脑商店:SCAN
2019/04/18 全球购物
高三英语教学反思
2014/01/13 职场文书
肖申克救赎观后感
2015/06/02 职场文书
导游词之云南省玉龙雪山
2019/12/19 职场文书
详解使用 CSS prefers-* 规范提升网站的可访问性与健壮性
2021/05/25 HTML / CSS
Axios取消重复请求的方法实例详解
2021/06/15 Javascript
JavaScript选择器函数querySelector和querySelectorAll
2021/11/27 Javascript
MySql数据库 查询时间序列间隔
2022/05/11 MySQL