利用jquery禁止外层滚动条的滚动


Posted in Javascript onJanuary 05, 2017

前言

通常情况下,当内部滚动条滚动到两端时,再接着滚动时外层的滚动条就会跟着滚动;可是有时我们希望用户只能滚动当前区域,而不触发外层(window)的滚动条,离开当前区域后,才能滚动外层的滚动条。因为用户可能一不小心滚动的幅度过大了,导致当前区域离开可视区域。

在jquery中,滚动事件是scroll,而这个事件是不能阻止冒泡和阻止默认事件的。假如我们设定要禁止window的滚动条,我采取的策略是:当鼠标进入到当前区域后,则window的滚动条的高度始终是鼠标进入前的高度

如下的代码:

<style type="text/css">
 .main{
 overflow: auto;
 width: 400px;
 height: 400px;
 border: 1px solid #aaa;
 }
 .main p{
 height: 800px;
 }
</style>

<body>
 <div id="main" class="main">
 <p></p>
 </div>
 <p style="height:1000px;"></p>
</body>

$(function () {
 var scrollTop = -1; // 鼠标进入到区域后,则存储当前window滚动条的高度
 $('#main').hover(function(){
 scrollTop = $(window).scrollTop();
 }, function(){
 scrollTop = -1;
 });

 // 鼠标进入到区域后,则强制window滚动条的高度
 $(window).scroll(function(){
 scrollTop!==-1 && $(this).scrollTop(scrollTop);
 })
})

从上面的代码可以看到,我并没有阻止window滚动条的事件,而是用户每次滚动时,都会重新进行赋值。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,当然,或许还有更好的方法,欢迎大家提供,谢谢!

Javascript 相关文章推荐
js利用Array.splice实现Array的insert/remove
Jan 13 Javascript
js getBoundingClientRect() 来获取页面元素的位置
Nov 25 Javascript
Javascript中的delete介绍
Sep 02 Javascript
jquery实现图片等比例缩放以及max-width在ie中不兼容解决
Mar 21 Javascript
使用jQuery清空file文件域的解决方案
Apr 12 Javascript
jQuery 删除或是清空某个HTML元素示例
Aug 04 Javascript
jquery实现定时自动轮播特效
Dec 10 Javascript
jQuery实现html双向绑定功能示例
Oct 09 jQuery
解决vue脚手架项目打包后路由视图不显示的问题
Sep 20 Javascript
vue项目持久化存储数据的实现代码
Oct 01 Javascript
微信小程序实现张图片合成为一张并下载
Jul 16 Javascript
antdesign-vue结合sortablejs实现两个table相互拖拽排序功能
Jan 08 Vue.js
bootstrap table配置参数例子
Jan 05 #Javascript
bootstrap table 表格中增加下拉菜单末行出现滚动条的快速解决方法
Jan 05 #Javascript
AngularJS中update两次出现$promise属性无法识别的解决方法
Jan 05 #Javascript
jQuery展示表格点击变色、全选、删除
Jan 05 #Javascript
JSON字符串和JSON对象相互转化实例详解
Jan 05 #Javascript
JS实现随机颜色的3种方法与颜色格式的转化
Jan 05 #Javascript
jQuery选择器实例应用
Jan 05 #Javascript
You might like
4月1日重磅发布!《星际争霸II》6.0.0版本更新
2020/04/09 星际争霸
main.php
2006/12/09 PHP
wampserver改变默认网站目录的办法
2015/08/05 PHP
PHP实现的简单AES加密解密算法实例
2017/05/29 PHP
use jscript Create a SQL Server database
2007/06/16 Javascript
用JS实现的一个include函数
2007/07/21 Javascript
firefox下input type=&quot;file&quot;的size是多大
2011/10/24 Javascript
document.getElementBy(&quot;id&quot;)与$(&quot;#id&quot;)有什么区别
2013/09/22 Javascript
jQuery实现简单下拉导航效果
2015/09/07 Javascript
js显示当前日期时间和星期几
2015/10/22 Javascript
解决angular的$http.post()提交数据时后台接收不到参数值问题的方法
2015/12/10 Javascript
jQuery实现漂亮实用的商品图片tips提示框效果(无图片箭头+阴影)
2016/04/16 Javascript
探讨跨域请求资源的几种方式(总结)
2016/12/02 Javascript
清除输入框内的空格
2016/12/21 Javascript
微信小程序之获取当前位置经纬度以及地图显示详解
2017/05/09 Javascript
layui前段框架日期控件使用方法详解
2017/05/19 Javascript
vue 如何添加全局函数或全局变量以及单页面的title设置总结
2017/06/01 Javascript
JS通过调用微信API实现微信支付功能的方法示例
2017/06/29 Javascript
EasyUI的DataGrid每行数据添加操作按钮的实现代码
2017/08/22 Javascript
jQuery选择器之基本选择器用法实例分析
2019/02/19 jQuery
Vue keepAlive 数据缓存工具实现返回上一个页面浏览的位置
2019/05/10 Javascript
jQuery中DOM常见操作实例小结
2019/08/01 jQuery
javascript利用canvas实现鼠标拖拽功能
2020/07/23 Javascript
Python面向对象程序设计中类的定义、实例化、封装及私有变量/方法详解
2019/02/28 Python
对python3 sort sorted 函数的应用详解
2019/06/27 Python
python将dict中的unicode打印成中文实例
2020/05/11 Python
美国在线乐器和设备商店:Musician’s Friend
2018/07/06 全球购物
澳大利亚领先的在线药房:Pharmacy Online(有中文站)
2020/02/22 全球购物
实习生单位鉴定意见
2013/12/04 职场文书
授权委托书
2014/09/17 职场文书
管辖权异议上诉状
2015/05/23 职场文书
golang 实现时间戳和时间的转化
2021/05/07 Golang
MySQL优化之如何写出高质量sql语句
2021/05/17 MySQL
python爬虫之selenium库的安装及使用教程
2021/05/23 Python
Golang 对es的操作实例
2022/04/20 Golang
js前端设计模式优化50%表单校验代码示例
2022/06/21 Javascript