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 相关文章推荐
入门基础学习 ExtJS笔记(一)
Nov 11 Javascript
jquery 获取dom固定元素 添加样式的简单实例
Feb 04 Javascript
Javascript 按位左移运算符使用介绍(
Feb 04 Javascript
AngularJS的一些基本样式初窥
Jul 27 Javascript
常用javascript表单验证汇总
Jul 20 Javascript
JavaScript截取指定长度字符串点击可以展开全部代码
Dec 04 Javascript
jQuery根据表单name获取值的方法
May 24 Javascript
Angular中使用$watch监听object属性值的变化(详解)
Apr 24 Javascript
javascript 面向对象实战思想分享
Sep 07 Javascript
layer.open的自适应及居中及子页面标题的修改方法
Sep 05 Javascript
JS 数组基本用法入门示例解析
Jan 16 Javascript
js编写简易的计算器
Jul 29 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迭代器实现斐波纳契数列的函数
2013/11/12 PHP
Yii框架使用PHPExcel导出Excel文件的方法分析【改进版】
2019/07/24 PHP
laravel框架中视图的基本使用方法分析
2019/11/23 PHP
JavaScript 动态添加表格行 使用模板、标记
2009/10/24 Javascript
JavaScript 组件之旅(三):用 Ant 构建组件
2009/10/28 Javascript
jQuery中与toggleClass等价的程序段 以及未来学习的方向
2010/03/18 Javascript
jQuery 1.5.1 发布,全面支持IE9 修复大量bug
2011/02/26 Javascript
由Javascript实现的页面日历
2011/11/04 Javascript
实现高性能JavaScript之执行与加载
2016/01/30 Javascript
jQuery轻松实现表格的隔行变色和点击行变色的实例代码
2016/05/09 Javascript
易被忽视的js事件问题总结
2016/05/14 Javascript
浅析JavaScript 箭头函数 generator Date JSON
2016/05/23 Javascript
webpack+vue.js快速入门教程
2016/10/12 Javascript
实现easyui的datagrid导出为excel的示例代码
2016/11/10 Javascript
Vue 固定头 固定列 点击表头可排序的表格组件
2016/11/25 Javascript
微信小程序踩坑记录之解决tabBar.list[3].selectedIconPath大小超过40kb
2018/07/04 Javascript
JS面向对象编程基础篇(二) 封装操作实例详解
2020/03/03 Javascript
原生js实现自定义滚动条组件
2021/01/20 Javascript
Django 生成登陆验证码代码分享
2017/12/12 Python
python简单商城购物车实例代码
2018/03/15 Python
opencv python 2D直方图的示例代码
2018/07/20 Python
Django 多表关联 存储 使用方法详解 ManyToManyField save
2019/08/09 Python
Python流程控制 while循环实现解析
2019/09/02 Python
python3 assert 断言的使用详解 (区别于python2)
2019/11/27 Python
Python进程间通信multiprocess代码实例
2020/03/18 Python
西班牙国家航空官方网站:Iberia
2017/11/16 全球购物
eDreams意大利:南欧领先的在线旅行社
2018/11/23 全球购物
幼儿园大班毕业感言
2014/02/06 职场文书
村干部培训方案
2014/05/02 职场文书
施工质量承诺书范文
2014/05/30 职场文书
企业安全生产月活动总结
2014/07/05 职场文书
党支部群众路线整改措施思想汇报
2014/10/10 职场文书
放牛班的春天观后感
2015/06/01 职场文书
初中运动会闭幕词范本3篇
2019/12/09 职场文书
晶体管单管来复再生式收音机
2021/04/22 无线电
《雀魂PONG☆》4月1日播出 PV角色设定情报
2022/03/20 日漫