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 陷阱 window全局对象
Nov 26 Javascript
学习ExtJS Column布局
Oct 08 Javascript
为javascript添加String.Format方法
Aug 11 Javascript
一个可以增加和删除行的table并可编辑表格中内容
Jun 16 Javascript
使用Function.apply()的参数数组化来提高 JavaScript程序性能的技巧
Dec 23 Javascript
全面解析Angular中$Apply()及$Digest()的区别
Aug 04 Javascript
基于vue2框架的机器人自动回复mini-project实例代码
Jun 13 Javascript
JavaScript实现body内任意节点的自定义属性功能示例
Sep 18 Javascript
vue2.x select2 指令封装详解
Oct 12 Javascript
小程序最新获取用户昵称和头像的方法总结
Sep 23 Javascript
Antd表格滚动 宽度自适应 不换行的实例
Oct 27 Javascript
vue3中的组件间通信
Mar 31 Vue.js
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
SONY ICF-SW55的电路分析
2021/03/02 无线电
php cookis创建实现代码
2009/03/16 PHP
php异常处理使用示例
2014/02/25 PHP
php实现当前页面点击下载文件的实例代码
2016/11/16 PHP
php面向对象程序设计中self与static的区别分析
2019/05/21 PHP
PHP7创建销毁session的实例方法
2020/02/03 PHP
firefox 和 ie 事件处理的细节,研究,再研究 书写同时兼容ie和ff的事件处理代码
2007/04/12 Javascript
addEventListener()第三个参数useCapture (Boolean)详细解析
2013/11/07 Javascript
根据表格中的某一列进行排序的javascript代码
2013/11/29 Javascript
jQuery截取指定长度字符串代码
2014/08/21 Javascript
javascript表单控件实例讲解
2016/09/13 Javascript
利用CSS、JavaScript及Ajax实现图片预加载的三大方法
2017/01/22 Javascript
原生JS实现圆环拖拽效果
2017/04/07 Javascript
一个有意思的鼠标点击文字特效jquery代码
2017/09/23 jQuery
纯html+css+javascript实现楼层跳跃式的页面布局(实例代码)
2017/10/25 Javascript
用 Vue.js 递归组件实现可折叠的树形菜单(demo)
2017/12/25 Javascript
原生javascript自定义input[type=radio]效果示例
2019/08/27 Javascript
JavaScript监听键盘事件代码实现
2020/06/03 Javascript
python 快速排序代码
2009/11/23 Python
python进阶教程之词典、字典、dict
2014/08/29 Python
详解Python 模拟实现生产者消费者模式的实例
2017/08/10 Python
python3中os.path模块下常用的用法总结【推荐】
2018/09/16 Python
python版本五子棋的实现代码
2018/12/11 Python
python银行系统实现源码
2019/10/25 Python
tensorflow 利用expand_dims和squeeze扩展和压缩tensor维度方式
2020/02/07 Python
Tensorflow 使用pb文件保存(恢复)模型计算图和参数实例详解
2020/02/11 Python
解决springboot yml配置 logging.level 报错问题
2020/02/21 Python
如何解决安装python3.6.1失败
2020/07/01 Python
美国咖啡批发网站:Coffee.org
2017/06/29 全球购物
阿联酋最好的手机、电子产品和家用电器网上商店:Eros Digital Home
2020/08/09 全球购物
android面试问题与答案
2016/12/27 面试题
竞选体育委员演讲稿
2014/04/26 职场文书
给妈妈洗脚活动方案
2014/08/16 职场文书
关于随地扔垃圾的检讨书
2014/09/30 职场文书
2015年科研工作总结范文
2015/05/13 职场文书
百日宴上的祝酒词
2015/08/10 职场文书