Me doy cuenta de que esta es una pregunta antigua, pero creo que he encontrado una buena solución. El problema es que el cuadro elegante cambia el valor de desbordamiento del cuerpo para ocultar las barras de desplazamiento del navegador.
Como señala Dave Kiss, podemos evitar que la caja elegante haga esto agregando los siguientes parámetros:
$('.image').fancybox({
padding: 0,
helpers: {
overlay: {
locked: false
}
}
});
Pero ahora podemos desplazarnos por la página principal mientras miramos nuestra elegante ventana de caja. Es mejor que saltar al principio de la página, pero probablemente no sea lo que realmente queremos.
Podemos evitar el desplazamiento de la manera correcta agregando los siguientes parámetros:
$('.image').fancybox({
padding: 0,
helpers: {
overlay: {
locked: false
}
},
'beforeLoad': function(){
disable_scroll();
},
'afterClose': function(){
enable_scroll();
}
});
Y agregue estas funciones de galambalaz. Consulte: ¿Cómo deshabilitar el desplazamiento temporalmente?
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;
}