利用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 相关文章推荐
WordPress 插件——CoolCode使用方法与下载
Jul 02 Javascript
JavaScript中常用的运算符小结
Jan 18 Javascript
为JS扩展Array.prototype.indexOf引发的问题探讨及解决
Apr 24 Javascript
JavaScript中this关键词的使用技巧、工作原理以及注意事项
May 20 Javascript
jquery实现类似淘宝星星评分功能实例
Sep 12 Javascript
node.js中的fs.fchown方法使用说明
Dec 16 Javascript
Bootstrap select多选下拉框实现代码
Dec 23 Javascript
解决vue中使用swiper插件问题及swiper在vue中的用法
Apr 04 Javascript
VUE+Element UI实现简单的表格行内编辑效果的示例的代码
Oct 31 Javascript
Vue表单绑定的实例代码(单选按钮,选择框(单选时,多选时,用 v-for 渲染的动态选项)
May 13 Javascript
vue中的v-if和v-show的区别详解
Sep 01 Javascript
微信小程序跨页面数据传递事件响应实现过程解析
Dec 19 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
使用PHP模拟HTTP认证
2006/10/09 PHP
PHP面向对象法则
2012/02/23 PHP
php开启与关闭错误提示适用于没有修改php.ini的权限
2014/10/16 PHP
php实现背景图上添加圆形logo图标的方法
2016/11/17 PHP
PHP实现mysqli批量执行多条语句的方法示例
2017/07/22 PHP
搜索附近的人PHP实现代码
2018/02/11 PHP
PHP设计模式入门之状态模式原理与实现方法分析
2020/04/26 PHP
PHP 扩展Memcached命令用法实例总结
2020/06/04 PHP
js下用层来实现select的title提示属性
2010/02/23 Javascript
js前台分页显示后端JAVA数据响应
2013/03/18 Javascript
JavaScript优化专题之Loading and Execution加载和运行
2016/01/20 Javascript
JS代码实现根据时间变换页面背景效果
2016/06/16 Javascript
jQueryUI Datepicker组件设置日期高亮
2016/10/13 Javascript
node.js Sequelize实现单实例字段或批量自增、自减
2016/12/08 Javascript
浅析bootstrap原理及优缺点
2017/03/19 Javascript
ES6新特性七:数组的扩充详解
2017/04/21 Javascript
详解Vue 2.0封装axios笔记
2017/06/22 Javascript
Easy UI动态树点击文字实现展开关闭功能
2017/09/30 Javascript
vue登录注册及token验证实现代码
2017/12/14 Javascript
JS运动特效之任意值添加运动的方法分析
2018/01/24 Javascript
Vant的安装和配合引入Vue.js项目里的方法步骤
2018/12/05 Javascript
JavaScript常见事件对象与操作实例总结
2019/01/05 Javascript
layui table表格数据的新增,修改,删除,查询,双击获取行数据方式
2019/11/14 Javascript
vue项目中openlayers绘制行政区划
2020/12/24 Vue.js
Python信息抽取之乱码解决办法
2017/06/29 Python
python中的json总结
2018/10/11 Python
python添加模块搜索路径和包的导入方法
2019/01/19 Python
Python批量查询关键词微信指数实例方法
2019/06/27 Python
python实现PID算法及测试的例子
2019/08/08 Python
基于python实现百度语音识别和图灵对话
2020/11/02 Python
python opencv角点检测连线功能的实现代码
2020/11/24 Python
欧洲最古老的鞋厂:Peter Kaiser
2019/11/05 全球购物
商务英语广告词大全
2014/03/18 职场文书
成绩单公证书
2014/04/10 职场文书
励志演讲稿300字
2014/08/21 职场文书
2014年法制宣传日活动方案
2014/11/02 职场文书