全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

原生js封装自定义滚动条

最近有一个关于制作在线音乐播放器的项目,需要使用一个滚动条,但是自带滚动条实在是太丑了,所以就自己琢磨了一下自定义的滚动条。

在网上看原理,说实话没怎么看懂,就趁今天上午上安卓的时候,研究了一下,结果还算是满意吧。然后就包装一个对象。

使用方法很简单,就是自定义一个div,将这个对象导入做参数,new一下就可以。也可以自己定义滚动条的样式,只要自己修改一下样式表就可以

效果图:

代码如下:

<!doctype html> 
<html> 
<head> 
 <meta charset="utf-8"> 
 <title></title> 
</head>
<style type="text/css">
div{
 padding:0px;
 box-sizing:border-box;
 margin:0px;
 border:0px;
}
#div-5{
 width: 700px;
 height: 500px;
 border:1px solid black;
 position: relative;
 overflow: hidden;
}
.ribbit-OF-div1{
 width: 20px;
 background-color: rgb(239, 238, 238);
 border:1px solid rgba(0,0,0,0.5);
 position: absolute;
 right:0px;
 top: 0px;
 cursor:default;
}
.ribbit-OF-div2{
 position: absolute;
 top:0px;
 right: 0px;
 width: 100%;
 height: 100px;
 background-color:rgba(0,0,0,0.3);
 border-radius: 10px;
}
.ribbit-OF-div3{
 width: 100%;
 height:auto;
 background-color: lime;
}
</style>
<body>
<div id="div-1">
<div id="div-2">

</div> 
</div>
<div id="div-3"><div id="div-4"></div></div>
<div id="div-5">
  123123<br/>
qwe<br/>
12asd23<br/>
asd3123<br/>
qwe123<br/>
235423423<br/>
azxc123<br/>
123123<br/>
qwe<br/>
12asd23<br/>
asd3123<br/>
qwe123<br/>
235423423<br/>
azxc123<br/>
123123<br/>
qwe<br/>
12asd23<br/>
asd3123<br/>
qwe123<br/>
235423423<br/>
azxc123<br/>
123123<br/>
qwe<br/>
12asd23<br/>
asd3123<br/>
qwe123<br/>
235423423<br/>
azxc123<br/>
123123<br/>
qwe<br/>
12asd23<br/>
asd3123<br/>
qwe123<br/>
235423423<br/>
azxc123<br/>
123123<br/>
qwe<br/>
12asd23<br/>
asd3123<br/>
qwe123<br/>
235423423<br/>
azxc123<br/>123123<br/>
qwe<br/>
12asd23<br/>
asd3123<br/>
qwe123<br/>
235423423<br/>
azxc123<br/>
123123<br/>
qwe<br/>
12asd23<br/>
asd3123<br/>
qwe123<br/>
235423423<br/>
azxc123<br/>
123123<br/>
qwe<br/>
12asd23<br/>
asd3123<br/>
qwe123<br/>
235423423<br/>
azxc123<br/>
</div>
</body>
<script type="text/javascript">
var div_5 = document.getElementById('div-5');
function OverFlow(element){
 this.element = element;
 this.ribbit_OF_div1 = document.createElement("div");
 this.ribbit_OF_div2 = document.createElement("div");
 this.ribbit_OF_div3 = document.createElement("div");
 this.createDiv = function(){
  this.ribbit_OF_div1.className = "ribbit-OF-div1";
  this.ribbit_OF_div2.className = "ribbit-OF-div2";
  this.ribbit_OF_div3.className = "ribbit-OF-div3";
  this.ribbit_OF_div3.innerHTML = this.element.innerHTML;
  this.element.innerHTML="";
  this.element.appendChild(this.ribbit_OF_div3);
  this.ribbit_OF_div1.appendChild(this.ribbit_OF_div2);
  document.body.appendChild(this.ribbit_OF_div1);
  this.ribbit_OF_div1.style.height = getComputedStyle(this.element,null).height;
  this.ribbit_OF_div1.style.left = (this.element.offsetLeft+(parseInt(getComputedStyle(this.element,null).width)-parseInt(getComputedStyle(this.ribbit_OF_div1,null).width)))+"px";
  this.ribbit_OF_div1.style.top = this.element.offsetTop+"px";
  this.ribbit_OF_div2.style.top = "0px";
 }
 this.addAudo=function(){
  var YY=null;//前鼠标位置
  var topXX = 0;//前top位置
  var topX = 0;//后top值
  var vherght = parseInt(getComputedStyle(this.ribbit_OF_div3,null).height)-parseInt(getComputedStyle(this.element,null).height);//可移动
  var dst = 0;
  //最大top移动位置
  var top_x = parseInt(getComputedStyle(this.ribbit_OF_div1,null).height)-parseInt(getComputedStyle(this.ribbit_OF_div2,null).height);
  var thio = this;
  window.onmousemove = function(e){
   fun(e.clientY);
  };
  this.ribbit_OF_div2.onmousedown=function(e){
   YY = e.clientY;
   topXX =parseInt(this.style.top);
   return false;
  }
  window.onmouseup=function(){
   YY = null;
   return true;
  }
  function fun(y){
   if(top_x>=topX&&topX>=0&&YY!=null){
    topX = y-YY+topXX;
    if(topX<0)topX=0;
    if(topX>top_x)topX=top_x-1;
    thio.ribbit_OF_div2.style.top = (topX-1)+"px";
    dst = topX*vherght/top_x;
    thio.element.scrollTop = dst;
   }
  }
 }
 this.createDiv();
 this.addAudo();
}
new OverFlow(div_5);
</script>
</html>

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!


# js  # 滚动条  # JS自定义滚动条效果  # js滚轮事件 js自定义滚动条的实现  # 原生JS实现自定义滚动条效果  # JS自定义滚动条效果简单实现代码  # JavaScript限定范围拖拽及自定义滚动条应用(3)  # 基于JavaScript实现自定义滚动条  # JavaScript自定义浏览器滚动条兼容IE、 火狐和chrome  # JavaScript 轮播图和自定义滚动条配合鼠标滚轮分享代码贴  # javascript自定义滚动条实现代码  # JS实现的页面自定义滚动条效果  # js实现自定义滚动条的示例  # 自定义  # 就可以  # 鼠标  # 播放器  # 很简单  # 自带  # 看懂  # 有一个  # 说实话  # 样式表  # 在网上  # 然后就  # solid  # height  # relative  # position  # black  # sizing  # margin 


相关文章: 已有域名和空间如何搭建网站?  个人摄影网站制作流程,摄影爱好者都去什么网站?  制作网站哪家好,cc、.co、.cm哪个域名更适合做网站?  如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?  建站之星2.7模板快速切换与批量管理功能操作指南  网站制作公司,橙子建站是合法的吗?  交易网站制作流程,我想开通一个网站,注册一个交易网址,需要那些手续?  北京企业网站设计制作公司,北京铁路集团官方网站?  建站主机如何选?性能与价格怎样平衡?  如何选择靠谱的建站公司加盟品牌?  简历在线制作网站免费,免费下载个人简历的网站是哪些?    Android自定义控件实现温度旋转按钮效果  建站主机与虚拟主机有何区别?如何选择最优方案?  如何通过商城免费建站系统源码自定义网站主题?  Android自定义listview布局实现上拉加载下拉刷新功能  如何快速建站并高效导出源代码?  如何高效利用亚马逊云主机搭建企业网站?  MySQL查询结果复制到新表的方法(更新、插入)  网站海报制作教学视频教程,有什么免费的高清可商用图片网站,用于海报设计?  如何在Golang中指定模块版本_使用go.mod控制版本号  ppt在线制作免费网站推荐,有什么下载免费的ppt模板网站?  建站主机系统SEO优化与智能配置核心关键词操作指南  宁波免费建站如何选择可靠模板与平台?  如何快速搭建高效简练网站?  广州网站制作公司哪家好一点,广州欧莱雅百库网络科技有限公司官网?  建站主机选虚拟主机还是云服务器更好?  详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)  ,在苏州找工作,上哪个网站比较好?  网站制作专业公司有哪些,如何制作一个企业网站,建设网站的基本步骤有哪些?  如何选购建站域名与空间?自助平台全解析  成都响应式网站开发,dw怎么把手机适应页面变成网页?  建站VPS能否同时实现高效与安全翻墙?  如何优化Golang Web性能_Golang HTTP服务器性能提升方法  建站之星后台密码遗忘?如何快速找回?  定制建站哪家更专业可靠?推荐榜单揭晓  如何在七牛云存储上搭建网站并设置自定义域名?  百度网页制作网站有哪些,谁能告诉我百度网站是怎么联系?  如何在云主机快速搭建网站站点?  广州顶尖建站服务:企业官网建设与SEO优化一体化方案  如何选择香港主机高效搭建外贸独立站?  七夕网站制作视频,七夕大促活动怎么报名?  义乌企业网站制作公司,请问义乌比较好的批发小商品的网站是什么?  建站主机SSH密钥生成步骤及常见问题解答?  安徽网站建设与外贸建站服务专业定制方案  音响网站制作视频教程,隆霸音响官方网站?  网站制作企业,网站的banner和导航栏是指什么?  外贸公司网站制作哪家好,maersk船公司官网?  如何在橙子建站上传落地页?操作指南详解  阿里云高弹*务器配置方案|支持分布式架构与多节点部署 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。