欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

原生js实现自定义滚动条

程序员文章站 2022-03-10 23:44:09
本文实例为大家分享了js实现自定义滚动条的具体代码,供大家参考,具体内容如下1.html文件div1是滚动条,div2是滚动小球,div3是文本区域容器,div4是文本区域。

本文实例为大家分享了js实现自定义滚动条的具体代码,供大家参考,具体内容如下

1.html文件

div1是滚动条,div2是滚动小球,div3是文本区域容器,div4是文本区域。

<div id="div">
 <div id="div1">
 <div id="div2"> </div>
 </div>
 <div id="div3">
 <div id="div4">
 <p>css3 教程</p>
 <p>css3 教程</p>
 <p>css3 简介</p>
 <p>css3 边框</p>
 <p>css3 圆角</p>
 <p>css3 背景</p>
 <p>css3 渐变</p>
 <p>css3 文本效果</p>
 <p>css3 字体</p>
 <p>css3 2d 转换</p>
 <p>css3 3d 转换</p>
 <p>css3 过渡</p>
 <p>css3 动画</p>
 <p>css3 多列</p>
 <p>css3 用户界面</p>
 <p>css3 图片</p>
 <p>css3 按钮</p>
 <p>css3 分页</p>
 <p>css3 框大小</p>
 <p>css3 弹性盒子</p>
 <p>css3 多媒体查询</p>
 <p>css3 多媒体查询实例</p>
 </div>
 </div>
</div>

2.css样式文件

通过容器溢出隐藏,文本区域的绝对定位,然后再交给js处理。

*{padding: 0; margin: 0;}
#div{top:200px;left:25%;width: 50%;height: 300px; position: absolute; 
}
#div1{width: 20px; height: 300px; position: relative; 
background: #cccccc; border-radius: 28px; float: right; cursor: pointer;}
#div1 #div2{left: -4px;width: 28px;height: 28px;border-radius: 50%; background: red;
position: absolute;}

#div3{width: 90%; height: 300px; border: 2px solid #cccccc;
position: relative; float: left; overflow: hidden;}
#div3 #div4{top:0;left:0;width: 100%; position: absolute; font-family: "微软雅黑";
font-size: 19px; letter-spacing: 1px; padding: 3px 6px;}

3.js脚本代码

window.onload =function(){
 var alldiv =document.getelementbyid('div');
 var odiv =document.getelementbyid('div2');
 var adiv =document.getelementbyid('div1');
 var textdiv1 =document.getelementbyid('div3');
 var textdiv2 =document.getelementbyid('div4');
 
 // 进度条拖动,内容跟着运动事件
 odiv.onmousedown =function(ev){
 var oevent =ev||event;
 
 var disy =oevent.clienty -odiv.offsettop;
 
 if(odiv.setcapture){
 odiv.onmousemove =mousemove;
 odiv.onmouseup =mouseup;
 
 odiv.setcapture();
 }else{
 document.onmousemove =mousemove;
 document.onmouseup =mouseup;
 }
 
 function mousemove(ev){
 var oevent =ev||event; 
 var t =oevent.clienty -disy; 
 var bottomline = adiv.offsetheight-odiv.offsetheight; 
 
 
 if(t <0){
 t =0;
 }else if(t >bottomline){
 t =bottomline;
 }
 
  var percent =t/272;
  
 odiv.style.top =t+'px';
 textdiv2.style.top =-(textdiv2.offsetheight-textdiv1.offsetheight)*percent+'px';
 
 };
 
 function mouseup(){
 this.onmousemove =null;
 this.onmouseup =null;
 
 if(odiv.releasecapture){
 odiv.releasecapture();
 }
 };
 
 return false;
 };
 
 // 点击进度条,开启定时器,小球做匀速运动到达后,清楚定时器
 adiv.onmousedown=function(ev){
 var oevent =ev||event; 
 var divy =oevent.clienty-alldiv.offsettop;
 var timer =null;var speed=10;
 
 
 clearinterval(timer)
 timer = setinterval(function(){
 var percent=odiv.offsettop/272;
 
 
 if(odiv.offsettop<divy-28){
 odiv.style.top =odiv.offsettop + speed +'px';
 textdiv2.style.top =-(textdiv2.offsetheight-textdiv1.offsetheight)*percent +'px';
 }else if(odiv.offsettop>divy){
 odiv.style.top =odiv.offsettop - speed +'px';
 textdiv2.style.top =-(textdiv2.offsetheight-textdiv1.offsetheight)*percent +'px';
 }else if(odiv.offsettop>260){
 odiv.offsettop = 272+'px';
 clearinterval(timer);
 }else if(odiv.offsettop<10){
 odiv.offsettop = 0+'px';
 clearinterval(timer);
 }else{
 clearinterval(timer);
 }
 
 
 },10);
 
 }
 
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

相关标签: js 滚动条