Mir ist klar, dass dies eine alte Frage ist, aber ich denke, ich habe eine gute Lösung dafür gefunden. Das Problem ist, dass das ausgefallene Feld den Überlaufwert des Körpers ändert, um die Bildlaufleisten des Browsers auszublenden.
Wie Dave Kiss betont, können wir Fancy Box daran hindern, dies zu tun, indem wir die folgenden Parameter hinzufügen:
$('.image').fancybox({
padding: 0,
helpers: {
overlay: {
locked: false
}
}
});
Aber jetzt können wir die Hauptseite scrollen, während wir unser ausgefallenes Box-Fenster betrachten. Es ist besser als an den Anfang der Seite zu springen, aber es ist wahrscheinlich nicht das, was wir wirklich wollen.
Wir können das richtige Scrollen verhindern, indem wir die nächsten Parameter hinzufügen:
$('.image').fancybox({
padding: 0,
helpers: {
overlay: {
locked: false
}
},
'beforeLoad': function(){
disable_scroll();
},
'afterClose': function(){
enable_scroll();
}
});
Und fügen Sie diese Funktionen aus Galambalaz hinzu. Siehe: So deaktivieren Sie das Scrollen vorübergehend?
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;
}