jq消除网页滚动条

网页有些时候需要能滚动的效果,但是不想要滚动条,我就遇到了这样的需求。自己用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代码

    function initScroll(){//js模拟垂直滚轮滑动var scrollEle = $('#box') ;var scrollWrap = $('#box-wrap') ;var scrollSpd = 20 ;//滚轮滚动的速度var Max_dist = scrollEle.height()-scrollWrap.height() ;//两个组件底边之间的最大距离if(Max_dist<=0){return ;}scrollEle.css('bottom',-Max_dist) ;scrollEle.bind('mousewheel',function(event){var step = scrollSpd ;event.preventDefault() ;event = event.originalEvent ;//兼容firefoxevent.delta = (event.wheelDelta) ? event.wheelDelta / 120 : -(event.detail || 0) / 3;var tempPos = 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><script src="./jquery-1.11.3.min.js"></script></head><body><div id="box-wrap"><div id="box"></div></div></body><script type="text/javascript">function initScroll(){//js模拟垂直滚轮滑动var scrollEle = $('#box') ;var scrollWrap = $('#box-wrap') ;var scrollSpd = 20 ;//滚轮滚动的速度var Max_dist = scrollEle.height()-scrollWrap.height() ;//两个组件底边之间的最大距离if(Max_dist<=0){return ;}scrollEle.css('bottom',-Max_dist) ;scrollEle.bind('mousewheel',function(event){var step = scrollSpd ;event.preventDefault() ;event = event.originalEvent ;//兼容firefox
            event.delta = (event.wheelDelta) ? event.wheelDelta / 120 : -(event.detail || 0) / 3;var tempPos = 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>
View Code

 

转载于:https://www.cnblogs.com/maskmtj/p/8454969.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/414685.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

5、Flutter 实现 ViewPager、bottomNavigationBar 界面切换

1、前言 首先我们想一下&#xff0c;如果在 Android 中实现 布局切换&#xff0c;通常的思路是&#xff1a; 做一个 viewpager一组 Fragment每个 Fragment 绑定一个 xml最后填充至 viewpager2、Flutter 实现 上边提到的用安卓原生做&#xff0c;思路是很明确&#xff0c;但是代…

Android 应用内实现导航页面,接入百度SDK内置导航,高德SDK内置导航

1、首先到百度地图开放平台创建应用&#xff0c;获取应用AK http://lbsyun.baidu.com/apiconsole/key 2、到百度语言平台创建应用&#xff0c;获取Secret Key和语言APP ID http://yuyin.baidu.com/app 3、到百度地图开放平台下载Android 导航SDK https://pan.baidu.com/s/1z…

6、Flutter Error waiting for a debug connection: ProcessException: adb did not report f(转)

1、错误信息 Error waiting for a debug connection: ProcessException: adb did not report forwarded port 2、解决方法 升级adb&#xff0c;其实是更新SDK Platform-Tools就可以了。 步骤&#xff1a;打开 Android SDK >>> SDK Tools 勾选 Android SDK Flatform-…

前端学习(2710):重读vue电商网站30之左侧菜单栏图标设计

我们想要的效果如下&#xff1a; 如何设计&#xff1f; 首先&#xff0c;我们可以在 data 中定义一个对象&#xff0c;对应于每一个菜单选项的 id 然后通过 for 循环遍历每一个菜单选项的 id即可。

Android运行时异常 couldn't find xx.so

Android 关于导入module&#xff0c;运行时错误 java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.txjifei.mapclient.liteapp-fp0FTs4C57uV3aLogQRvYA/base.apk"],nativeLibraryDirectories[/data/app/com.txj…

4、jeecg 笔记之 自定义显示按钮 (exp 属性)

1、需求 先看一下需求吧&#xff0c;我们希望 datagrid 操作栏中的按钮&#xff0c;可以根据条件进行动态显示。 2、实现 其实 jeecg 提供了一个属性 - exp &#xff0c;通过该属性即可实现。 <t:dgFunOpt funname"startInspect(id,mcaPhone)" exp"mcaStatus…

AngularJs自学心得

1.angularjs的SEO问题解决方案 我的前端用到angularjs&#xff0c;服务器用到nginx。 大体流程&#xff1a; nginx服务器检测到爬虫访问&#xff0c;跳转到专门的url&#xff0c;此url是angularjs已经渲染过后的页面。非常的简单。 a).首先是angularjs的渲染问题 angular添加一…

Android 人脸识别进行实名验证demo

实名验证简介&#xff1a;http://ai.baidu.com/docs#/Face-PersonVerify-V3/top 1、首先到百度云平台——人脸识别项创建应用 https://console.bce.baidu.com/?fromai1#/aip/overview 2、创建应用之后、下载SDK SDK链接&#xff1a;https://download.csdn.net/download/meix…

Hibernate 补充 ManyToOne、OneToMany、OneToOne的使用例

1、前言 Hibernate 为程序员提供一种级联操作&#xff0c;在编写程序时&#xff0c;通过 Hibernate 的级联功能可以很方便的操作数据库的主从表的数据&#xff0c;我们最常用的级联是级联保存和级联删除。2、ManyToOne | OneToMany 单词误导 当我们去试用的时候&#xff0c;首先…

移动端使用页尾文字使用绝对定位遇到input框会飘起来的处理方案

如下版权信息的样式在遇到input框的时候会跟随输入框其后 优雅的解决方式&#xff1a;&#xff08;定位遇上键盘飘窗解决&#xff09; mounted里面写上&#xff1a;var originalHeightdocument.documentElement.clientHeight || document.body.clientHeight; //console.info(&…

Android 解决导入多个module时jar包冲突

1、在后导入的module中编译先前导入的module compile project(path: :faceplatform) 2、删除后导入的module里面的和先前导入的module的重复jar包&#xff0c; 同理jniLibs里面重复的so文件也需要删除 在线回复bug:qq1085220040

linux 添加环境变量(php为例)

find / -name php vim /etc/profile 文件最后添加 export PATH$PATH:/usr/local/php/bin source /etc/profile php -v 这时只实现了当前ssh 登录时可以PHP&#xff0c;如果退出重新登录就不能使用PHP了 解决&#xff1a; vim ~/.bashrc 添加 source /etc/profile source ~/.…

Android 活体人脸实时采集,百度、虹软

百度现在功能较少——使用虹软&#xff0c;方便 虹软官网&#xff1a;https://ai.arcsoft.com.cn/ucenter/resource/build/index.html 申请应用&#xff0c;下载SDK即可 虹软已修改好的&#xff0c;可注册人脸&#xff0c;人脸验证成功——登陆的demo&#xff1a;https://down…