我在一个开发站点上实现了fancybox2。
当我使用fancybox (点击链接等)时,整个html都会移到它后面--并转到顶部。我让它在另一个演示中工作得很好,但是当我将相同的代码拖到这个项目中时,它会跳到顶部。不仅包含内联div的链接,还包含简单图片库的链接。
有没有人经历过这种情况?
发布于 2013-03-09 11:37:39
这实际上可以通过Fancybox 2中的助手来完成。
$('.image').fancybox({
helpers: {
overlay: {
locked: false
}
}
});
http://davekiss.com/prevent-fancybox-from-jumping-to-the-top-of-the-page/
发布于 2013-07-04 05:10:23
Jordanj77是正确的,但最简单的解决方案是转到stylesheet jquery.fancybox.css
并注释掉.fancybox-lock
部分中的overflow: hidden !important;
行
发布于 2014-01-26 03:24:59
我知道这是一个古老的问题,但我想我已经找到了一个很好的解决方案。问题是,花哨的框改变了主体的溢出值,以便隐藏浏览器滚动条。
正如Dave Kiss指出的那样,我们可以通过添加以下参数来阻止from这样做:
$('.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的这些函数。请参阅:How to disable scrolling temporarily?
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;
}
https://stackoverflow.com/questions/13547007
复制相似问题