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 getElementsByClassName函数
Apr 01 Javascript
jquery URL参数判断,确定菜单样式
May 31 Javascript
Js放到HTML文件中的哪个位置有什么区别
Aug 21 Javascript
优化Jquery,提升网页加载速度
Nov 14 Javascript
10条建议帮助你创建更好的jQuery插件
May 18 Javascript
关于数据与后端进行交流匹配(点亮星星)
Aug 03 Javascript
详解JavaScript常量定义
Jan 03 Javascript
JS正则截取两个字符串之间及字符串前后内容的方法
Jan 06 Javascript
详解vue项目的构建,打包,发布全过程
Nov 23 Javascript
JavaScript设计模式之命令模式实例分析
Jan 16 Javascript
vue微信分享的实现(在当前页面分享其他页面)
Apr 16 Javascript
babel7.x和webpack4.x配置vue项目的方法步骤
May 12 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 模板高级篇总结
2006/12/21 PHP
简单示例AJAX结合PHP代码实现登录效果代码
2008/07/25 PHP
分享PHP守护进程类
2015/12/30 PHP
Yii框架结合sphinx,Ajax实现搜索分页功能示例
2016/10/18 PHP
PHP框架自动加载类文件原理详解
2017/06/06 PHP
Ajax一统天下之Dojo整合篇
2007/03/24 Javascript
js+xml生成级联下拉框代码
2012/07/24 Javascript
多个jquery.datatable共存,checkbox全选异常的快速解决方法
2013/12/10 Javascript
javascript 中__proto__和prototype详解
2014/11/25 Javascript
JavaScript中getUTCMinutes()方法的使用详解
2015/06/10 Javascript
跟我学习javascript的异步脚本加载
2015/11/20 Javascript
理解javascript封装
2016/02/23 Javascript
Node.js的项目构建工具Grunt的安装与配置教程
2016/05/12 Javascript
JavaScript读二进制文件并用ajax传输二进制流的方法
2016/07/18 Javascript
js监听键盘事件的方法_原生和jquery的区别详解
2016/10/10 Javascript
Vue父子模版传值及组件传值的三种方法
2017/11/27 Javascript
微信小程序云开发如何实现数据库自动备份实现
2019/08/16 Javascript
浅谈关于vue中scss公用的解决方案
2019/12/02 Javascript
js实现上传图片并显示图片名称
2019/12/18 Javascript
Vue 实现显示/隐藏层的思路(加全局点击事件)
2019/12/31 Javascript
JavaScript碰撞检测原理及其实现代码
2020/03/12 Javascript
Vue关于组件化开发知识点详解
2020/05/13 Javascript
浅谈vue项目,访问路径#号的问题
2020/08/14 Javascript
解决Antd Table组件表头不对齐的问题
2020/10/27 Javascript
如何在 Vue 中使用 JSX
2021/02/14 Vue.js
python根据出生日期返回年龄的方法
2015/03/26 Python
在Python中使用PIL模块处理图像的教程
2015/04/29 Python
python简单实现基数排序算法
2015/05/16 Python
Python使用迭代器捕获Generator返回值的方法
2017/04/05 Python
工商管理应届生求职信
2013/10/07 职场文书
写给女朋友的道歉信
2014/01/08 职场文书
企业管理毕业生求职信
2014/03/11 职场文书
优秀团员自我评价
2015/03/10 职场文书
2016大学生社会实践单位评语
2015/12/01 职场文书
基于Redis zSet实现滑动窗口对短信进行防刷限流的问题
2022/02/12 Redis
手写Spirit防抖函数underscore和节流函数lodash
2022/03/22 Javascript