首页 / 知识
如何使用jQuery 消除网页的滚动条
2023-04-11 15:07:00
网页有些时候需要能滚动的效果,但是不想要滚动条,我就遇到了这样的需求。自己用jq写了一个垂直滚动条。
纯css也可以实现
.box::-webkit-scrollbar{display:none}
但是edge和Firefox不兼容,自己想了一下只要监听滚轮事件,用jq写应该很简单,所以就自己写了一下。
原理:需要两个div,第一个就命名为box-wrap吧,它是一个外层的包裹,由于是垂直滚动,所以要固定高度,然后设置overflow:hidden,这样竖直方向超过高度的部分就会被隐藏
第二个div就是内容需要滚动的div,命名为box,采用绝对定位,在监听到鼠标滚轮事件后根据滚轮方向相对移动
css代码
#box-wrap{
position:relative;
width:100%;
height:500px;
overflow:hidden;
}
#box{
position:absolute;
width:100%;
height:1500px;
background:linear-gradient(blue,white);
}
为了能演示效果,里面的盒子我写成了定高,并且让背景渐变,正常来讲可以高度auto让文字撑开就行了,样式的关键在于让父类relative之后再让子类absolute,这样子类就可以相对父类移动
js代码
functioninitScroll(){
//js模拟垂直滚轮滑动
varscrollEle=$('#box');
varscrollWrap=$('#box-wrap');
varscrollSpd=20;//滚轮滚动的速度
varMax_dist=scrollEle.height()-scrollWrap.height();//两个组件底边之间的最大距离
if(Max_dist<=0){
return;
}
scrollEle.css('bottom',-Max_dist);
scrollEle.bind('mousewheel',function(event){
varstep=scrollSpd;
event.preventDefault();
event=event.originalEvent;
//兼容firefox
event.delta=(event.wheelDelta)?event.wheelDelta/120:-(event.detail||0)/3;
vartempPos=parseInt(scrollEle.css('bottom'));
console.log(tempPos);
if(event.delta>0){
if(tempPos>(-Max_dist)){
tempPos-step>(-Max_dist)?tempPos=tempPos-step:tempPos=-Max_dist;
}
}else{
if(tempPos<0){
tempPos+step<0?tempPos=tempPos+step:tempPos=0;
}
}
//console.log(tempPos);
scrollEle.css('bottom',tempPos);
});
}
initScroll();
主要就是监听滚轮事件,从而判断滚轮的方向
event.delta=(event.wheelDelta)?event.wheelDelta/120:-(event.detail||0)/3;
这句是为了兼容火狐,其他浏览器都是属性名称为wheelDelta,值表示为120向上,-120向下,火狐是属性名称为detail,值表示为3向下,-3向上
每次触发滚轮事件都会获取子类的位置,然后根据滚轮的方向调整当前位置,注意判断一下边界就好了
demo代码
<html>
<head>
<style>
#box-wrap{
position:relative;
width:100%;
height:500px;
overflow:hidden;
}
#box{
position:absolute;
width:100%;
height:1500px;
background:linear-gradient(blue,white);
}
</style>
<scriptsrc="./jquery-1.11.3.min.js"></script>
</head>
<body>
<divid="box-wrap">
<divid="box"></div>
</div>
</body>
<scripttype="text/javascript">
functioninitScroll(){
//js模拟垂直滚轮滑动
varscrollEle=$('#box');
varscrollWrap=$('#box-wrap');
varscrollSpd=20;//滚轮滚动的速度
varMax_dist=scrollEle.height()-scrollWrap.height();//两个组件底边之间的最大距离
if(Max_dist<=0){
return;
}
scrollEle.css('bottom',-Max_dist);
scrollEle.bind('mousewheel',function(event){
varstep=scrollSpd;
event.preventDefault();
event=event.originalEvent;
//兼容firefox
event.delta=(event.wheelDelta)?event.wheelDelta/120:-(event.detail||0)/3;
vartempPos=parseInt(scrollEle.css('bottom'));
console.log(tempPos);
if(event.delta>0){
if(tempPos>(-Max_dist)){
tempPos-step>(-Max_dist)?tempPos=tempPos-step:tempPos=-Max_dist;
}
}else{
if(tempPos<0){
tempPos+step<0?tempPos=tempPos+step:tempPos=0;
}
}
//console.log(tempPos);
scrollEle.css('bottom',tempPos);
});
}
initScroll();
</script>
</html>
本文转载自中文网 |
最新内容
相关内容
python如何读取列表中元素的位置?
python如何读取列表中元素的位置?,位置,数据,异常,培训,字符串,元素,索引,方法,示例,结果,python读取列表中元素位置的方法:1、使用index()方python中获取路径的三种方法
python中获取路径的三种方法,工作,代码,情况,培训,下来,路径,文件,也就是,桌面,目录,python中获取路径总结下来分为三种情况:1、获取工作目录python如何调用另一个文件夹中的内
python如何调用另一个文件夹中的内容?,系统,培训,文件,模块,内容,路径,函数,所在,前缀,语句,python中调用另外一个文件夹中的内容:1、同一文件如何在python代码中指定保存的文件
如何在python代码中指定保存的文件格式,代码,培训,文件格式,格式,二进制文件,文件,后缀,以上,方法,更多,python指定保存文件格式的方法:1、保python如何看变量属性
python如何看变量属性,培训,属性,函数,变量,参数,对象,方法,列表,范围内,字典,1、使用dir()函数查看dir()函数不带参数时,返回当前范围内的变Python如何复制文件中的内容
Python如何复制文件中的内容,盘中,数据,培训,文件,内容,方法,文件夹,路径,源文件,文件名,python复制文件中内容的方法:1、使用shutil.copyfilepython如何获得文件大小
python如何获得文件大小,培训,文件大小,文件夹,大小,函数,方法,接口,以上,结果,文件,python获取文件大小的方法如下方法一:获取文件大小importpython如何输入序列
python如何输入序列,名称,数据,合法,培训,列表,函数,赋值,序列,变量,语法,Python创建列表在Python中,创建列表的方法可分为2种,下面分别进行介Python库与模块的区别是什么?
Python库与模块的区别是什么?,名称,概念,标准,机构,培训,名字,代码,模块,区别,函数,python库与模块的区别是:模块、库主要区别在于他们的定义python的闭包函数是什么
python的闭包函数是什么,代码,工作,函数,培训,程序,外部,个数,变量,嵌套,赋值,python中的闭包,又称闭包函数或者闭合函数,其实和前面讲的嵌套函为什么python中使用模块无法识别
为什么python中使用模块无法识别,代码,工具,培训,模块,语句,定义,管理工具,变量,文件夹,结尾,Python模块(Module),是一个Python文件,以.py结尾,如何用python将数据导出
如何用python将数据导出,数据,情况,分析,代码,培训,文件,表格,难事,后面,以上,Python的一大应用就是数据分析了,而数据分析中,经常碰到需要处理