利用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 相关文章推荐
ajax上传时参数提交不更新等相关问题
Dec 11 Javascript
JS中Eval解析JSON字符串的一个小问题
Feb 21 Javascript
Javascript 6里的4个新语法
Aug 25 Javascript
JS实现页面数据无限加载
Sep 13 Javascript
jQuery命名空间与闭包用法示例
Jan 12 Javascript
JS中使用 after 伪类清除浮动实例
Mar 01 Javascript
javascript 初学教程及五子棋小程序的简单实现
Jul 04 Javascript
animate.css在vue项目中的使用教程
Aug 05 Javascript
React通过redux-persist持久化数据存储的方法示例
Feb 14 Javascript
巧妙运用v-model实现父子组件传值的方法示例
Apr 07 Javascript
vue的滚动条插件实现代码
Sep 07 Javascript
vue组件入门知识全梳理
Sep 21 Javascript
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
全国FM电台频率大全 - 11 浙江省
2020/03/11 无线电
用PHP和ACCESS写聊天室(四)
2006/10/09 PHP
PHP的switch判断语句的“高级”用法详解
2014/10/01 PHP
php将access数据库转换到mysql数据库的方法
2014/12/24 PHP
PHP与Ajax相结合实现登录验证小Demo
2016/03/16 PHP
php中实现进程锁与多进程的方法
2016/09/18 PHP
laravel通过创建自定义artisan make命令来新建类文件详解
2017/08/17 PHP
PHP仿tp实现mvc框架基本设计思路与实现方法分析
2018/05/23 PHP
javascript作用域容易记错的两个地方分析
2012/06/22 Javascript
javascript的propertyIsEnumerable()方法使用介绍
2014/04/09 Javascript
jQuery实现鼠标滑向当前图片高亮显示并且其它图片变灰的方法
2015/07/27 Javascript
JavaScript中使用sencha gridpanel 编辑单元格、改变单元格颜色
2015/11/26 Javascript
详解javascript跨浏览器事件处理程序
2016/03/27 Javascript
jquery插件方式实现table查询功能的简单实例
2016/06/06 Javascript
Jquery实现上下移动和排序代码
2016/10/17 Javascript
微信小程序中form 表单提交和取值实例详解
2017/04/20 Javascript
JavaScript字符串检索字符的方法
2017/06/23 Javascript
浅谈关于angularJs中使用$.ajax的注意点
2017/08/12 Javascript
jQuery事件委托代码实践详解
2019/06/21 jQuery
Vue实现导航栏的显示开关控制
2019/11/01 Javascript
Vue实现Layui的集成方法步骤
2020/04/10 Javascript
详解常用查找数据结构及算法(Python实现)
2016/12/09 Python
Apache如何部署django项目
2017/05/21 Python
Python与人工神经网络:使用神经网络识别手写图像介绍
2017/12/19 Python
Python脚本操作Excel实现批量替换功能
2019/11/20 Python
Scrapy模拟登录赶集网的实现代码
2020/07/07 Python
CSS3+DIV实现漂亮的动画彩色标签
2016/06/16 HTML / CSS
香港永安旅游网:Wing On Travel
2017/04/10 全球购物
英国第一家领先的在线处方眼镜零售商:Glasses Direct
2018/02/23 全球购物
求职信的最佳写作思路
2014/02/01 职场文书
车辆工程专业求职信
2014/06/14 职场文书
大专应届毕业生求职信
2014/07/15 职场文书
工会文体活动总结
2015/05/07 职场文书
2015年纪委工作总结
2015/05/13 职场文书
2015年行政管理人员工作总结
2015/10/15 职场文书
退休劳动合同怎么写?
2019/10/25 职场文书