如何从阻止滚动的元素中移除抖动
How to remove jitter from elements on which scrolling is prevented
请先看另一个问题:鼠标滚轮滚动事件和接受答案的演示。
如何减少滚动事件取消时的抖动?
Demo: http://jsfiddle.net/HUGTL/
基于你最初问题的答案,你可以这样做:
var noscroll = document.getElementById('noscroll');
var locked, lockedX, lockedY;
noscroll.addEventListener('mouseover', function (){
locked = true;
lockedX = window.scrollX;
lockedY = window.scrollY;
}, false);
noscroll.addEventListener('mouseout', function (){
locked = false;
}, false);
// changes
$(window).on("mousewheel keydown", function(e){
if(locked === true){
return false;
}
});
$(window).on("scroll", function(e){
if(locked === true){
// add fallback here for other scenarios
}
});
我使用jQuery来简化/标准化事件处理。
注意,防止键事件可能不可取;我包含它是为了展示如何防止箭头键(您还可以检查特定的键代码)。
我还为mousewheel/keydown
不处理的场景添加了一个通用的回退处理程序。
对于触摸事件,这可能不能很好地工作(或者根本不能工作)。最重要的是,确保它不会混淆你的用户或删除预期的功能。
如果您只想处理鼠标滚轮,则可能简单得多:
$("#noscroll").on("mousewheel", function(e){
return false;
});
演示:http://jsfiddle.net/HUGTL/3/。但是,这对键事件不起作用。
相关文章:
- CKEditor Widget-阻止编辑可编辑元素本身
- 如何设置html元素填充的动画
- 如何将HTML id分配给元素,以及如何将JavaScript应用于元素
- 使用 jQuery 的 .on 函数如何获取事件的原始元素
- 使用clickToggle并在单击另一个元素时关闭元素
- 单击时将焦点更改为元素
- 表追加而不附加最后一个元素
- 如何在jQuery中获取元素的形式
- 我可以获得相对于被点击元素的确切点击位置吗
- 在函数中添加数组元素的数值
- 在单击任何位置时隐藏元素,而不检查每次DOM单击
- 将视口底部滚动到元素底部
- 是否有任何snippet或jQuery插件可以列出easylist.txt模式匹配的DOM中的所有元素
- 在不使用JQuery的情况下隐藏DOM中的选定元素
- 如何使用jquery处理php循环通过元素
- Ckeditor-plugin:插入虚假元素add不情愿<p>标签前后
- JQuery添加元素需要在我的js之前再次添加JQuery脚本
- Div元素朝相反方向移动会导致滚动条抖动
- Javascript中的抖动元素
- 如何从阻止滚动的元素中移除抖动