利用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 相关文章推荐
window.open不被拦截的实现代码
Aug 22 Javascript
用NODE.JS中的流编写工具是要注意的事项
Mar 01 Javascript
Jquery AJAX POST与GET之间的区别详细介绍
Oct 17 Javascript
Javascript中return的使用与闭包详解
Jan 11 Javascript
webpack v4 从dev到prd的方法
Apr 02 Javascript
Vue axios设置访问基础路径方法
Sep 19 Javascript
webpack打包多页面的方法
Nov 30 Javascript
layui下拉列表select实现可输入查找的方法
Sep 28 Javascript
解决Vue 移动端点击出现300毫秒延迟的问题
Jul 21 Javascript
Openlayers实现距离面积测量
Sep 28 Javascript
使用vue3重构拼图游戏的实现示例
Jan 25 Vue.js
vue使用v-model进行跨组件绑定的基本实现方法
Apr 28 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
PHP遍历文件夹与文件类及处理类用法实例
2014/09/23 PHP
php中mail函数发送邮件失败的解决方法
2014/12/24 PHP
php备份数据库类分享
2015/04/14 PHP
PHP实现的增强性mhash函数
2015/05/27 PHP
PHP中ID设置自增后不连续的原因分析及解决办法
2016/08/21 PHP
PHP开发api接口安全验证操作实例详解
2020/03/26 PHP
javascript实现的动态文字变换
2007/07/28 Javascript
神奇的代码 通杀各种网站-可随意修改复制页面内容
2008/07/17 Javascript
jQuery查询数据返回object和字符串影响原因是什么
2013/08/09 Javascript
javascript将浮点数转换成整数的三个方法
2014/06/23 Javascript
JQuery实现防止退格键返回的方法
2015/02/12 Javascript
JavaScript实现动态添加,删除行的方法实例详解
2015/07/02 Javascript
Javascript之Math对象详解
2016/06/07 Javascript
微信小程序多张图片上传功能
2017/06/07 Javascript
JS 实现banner图片轮播效果(鼠标事件)
2017/08/04 Javascript
JavaScript实现树的遍历算法示例【广度优先与深度优先】
2017/10/26 Javascript
JS二级菜单不同实现方法分析【4种方法】
2018/12/21 Javascript
Elementui表格组件+sortablejs实现行拖拽排序的示例代码
2019/08/28 Javascript
JS数组方法concat()用法实例分析
2020/01/18 Javascript
python实现rsa加密实例详解
2017/07/19 Python
Python3 利用requests 库进行post携带账号密码请求数据的方法
2018/10/26 Python
Python GUI编程学习笔记之tkinter事件绑定操作详解
2020/03/30 Python
VScode连接远程服务器上的jupyter notebook的实现
2020/04/23 Python
Python字典dict常用方法函数实例
2020/11/09 Python
python+opencv实现车道线检测
2021/02/19 Python
SEPHORA丝芙兰德国官方购物网站:化妆品、护肤品和香水
2020/01/21 全球购物
关于赌博的检讨书
2014/01/24 职场文书
《得道多助,失道寡助》教学反思
2014/04/19 职场文书
小学生综合素质评语
2014/04/23 职场文书
组织鉴定材料
2014/06/02 职场文书
2015年城管个人工作总结范文
2015/04/20 职场文书
毕业实习感受与体会
2015/05/26 职场文书
大学生实习证明
2015/06/16 职场文书
丧事答谢词大全
2015/09/30 职场文书
pytorch中[..., 0]的用法说明
2021/05/20 Python
django中websocket的具体使用
2022/01/22 Python