这是我第一次在我的项目中实现 FancyBox。我已将图像与链接分开。因此,当您将鼠标悬停在图像上时,会出现查看大图像的链接。那里的一切都很好。我的问题是单击链接时窗口不断跳转/滚动到顶部。我已经使用 jquery 通过使用 preventDefault 来禁用它的默认操作,但这并没有解决我的问题。有什么建议么?你可以在www.labpixls.com看到我想要完成的事情
我需要尽快解决这个问题。我正在创建一个我计划提供给 wp 社区的 wordpress 主题。
这是我第一次在我的项目中实现 FancyBox。我已将图像与链接分开。因此,当您将鼠标悬停在图像上时,会出现查看大图像的链接。那里的一切都很好。我的问题是单击链接时窗口不断跳转/滚动到顶部。我已经使用 jquery 通过使用 preventDefault 来禁用它的默认操作,但这并没有解决我的问题。有什么建议么?你可以在www.labpixls.com看到我想要完成的事情
我需要尽快解决这个问题。我正在创建一个我计划提供给 wp 社区的 wordpress 主题。
问题是 fancyBox 改变了 body 的溢出值以隐藏浏览器滚动条。这实际上可以通过 Fancybox 2 中的助手来完成。
$('.image').fancybox({
padding: 0,
helpers: {
overlay: {
locked: false
}
}
});
我意识到这个问题已经被问过一段时间了,但我认为我已经找到了一个很好的解决方案。问题是花哨的盒子会改变 body 的溢出值以隐藏浏览器滚动条。
正如Thorn 指出的,我们可以通过添加以下参数来阻止fancy box 这样做:
$('.image').fancybox({
padding: 0,
helpers: {
overlay: {
locked: false
}
}
});
但是,现在我们可以在查看我们花哨的框窗口时滚动主页。它比跳到页面顶部要好,但它可能不是我们真正想要的。
我们可以通过添加下一个参数来防止以正确的方式滚动:
$('.image').fancybox({
padding: 0,
helpers: {
overlay: {
locked: false
}
},
'beforeLoad': function(){
disable_scroll();
},
'afterClose': function(){
enable_scroll();
}
});
并从 galambalaz 添加这些功能。请参阅:如何暂时禁用滚动?
var keys = [37, 38, 39, 40];
function preventDefault(e) {
e = e || window.event;
if (e.preventDefault) e.preventDefault();
e.returnValue = false;
}
function keydown(e) {
for (var i = keys.length; i--;) {
if (e.keyCode === keys[i]) {
preventDefault(e);
return;
}
}
}
function wheel(e) {
preventDefault(e);
}
function disable_scroll() {
if (window.addEventListener) {
window.addEventListener('DOMMouseScroll', wheel, false);
}
window.onmousewheel = document.onmousewheel = wheel;
document.onkeydown = keydown;
}
function enable_scroll() {
if (window.removeEventListener) {
window.removeEventListener('DOMMouseScroll', wheel, false);
}
window.onmousewheel = document.onmousewheel = document.onkeydown = null;
}