我正在尝试阻止默认滚动行为,同时仍然确定用户尝试滚动的像素数.
我的目标是(在我的页面上的某个垂直位置)将导航元素固定到屏幕顶部并劫持滚动/滑动事件以在用户向上滚动时拉下移动菜单(因此上下移动所述元素)通过ñ像素取决于有多少像素的用户试图滚动).
我知道在阻止原生行为方面存在的用户体验/可访问性问题,但这些诉讼需要西装想要的东西.
到目前为止,我有:
$('body').on({
'mousewheel' : function(e) {
e.preventDefault();
e.stopPropagation();
}
});
Run Code Online (Sandbox Code Playgroud)
但我很难知道如何访问滚动的像素数(因为元素/滚动偏移不再是指南).
编辑:请注意,此问题专门询问滚动被阻止时有关鼠标/滚动操作的信息.不要认为这已被适当标记为重复.
我正在使用jquery工具叠加,它很棒.但是,滚动行为有点奇怪.如果您打开叠加层并将鼠标放在叠加层上,如果您位于叠加层的顶部/底部,则仍可以在其后面滚动页面.
有没有办法(最好是一个内置的jquery工具)来阻止页面覆盖滚动?
嘿伙计们下载了一些用JS编码的简单效果.该插件名为classie.js,该家伙编写了一些与此插件classie.js交互的自定义代码
一段时间前问过一个类似的问题classie.js问题和这个家伙真的完美地回答了classie.js里面的代码是如何运作的.多数民众赞成好,所以现在我明白了classie.js中的代码是如何工作的,现在我的问题是,有很多代码实际上与这个名为classie.js的插件进行交互并且我有一些难以理解.让我解释一下我的问题是什么:
classie.js代码:
( function( window ) {
'use strict';
var hasClass, addClass, removeClass;
if ( 'classList' in document.documentElement ) {
// console.log(document.documentElement);
hasClass = function( elem, c ) {
// cons100%ole.log("elem is : " + elem + " c is " + c);
return elem.classList.contains( c );
};
addClass = function( elem, c ) {
console.log('elem Logged');
console.log(elem);
elem.classList.add( c );
};
removeClass = function( elem, c ) {
console.log('removeClass function got used in if statement')
elem.classList.remove …Run Code Online (Sandbox Code Playgroud) 我需要在溢出区域重新实现滚动功能,以便鼠标滚轮改变当前选择而不是滚动位置.
要做到这一点,我至少需要阻止浏览器的默认滚动操作.我可以告诉knockout默认情况下,只要你不从事件处理程序返回'true'.
但它似乎不起作用,也没有明确地对事件调用'preventDefault'.此问题必须特定于scroll事件.
scrolled: function (vm, event) {
event.preventDefault();
return false;
}
Run Code Online (Sandbox Code Playgroud)