Я усвідомлюю, що це давнє питання, але я думаю, що я знайшов гарне рішення для нього. Проблема полягає в тому, що фантазія змінює значення переповнення тіла, щоб приховати панелі прокрутки браузера.
Як зазначає Дейв Кісс, ми можемо зупинити фантазійну скриньку від цього, додавши наступні параметри:
$('.image').fancybox({
padding: 0,
helpers: {
overlay: {
locked: false
}
}
});
Але тепер ми можемо прокручувати головну сторінку, дивлячись на наше вікно вишуканого вікна. Це краще, ніж стрибати на верхню частину сторінки, але це, мабуть, не те, що ми насправді хочемо.
Ми можемо запобігти прокрутці правильним способом, додавши наступні параметри:
$('.image').fancybox({
padding: 0,
helpers: {
overlay: {
locked: false
}
},
'beforeLoad': function(){
disable_scroll();
},
'afterClose': function(){
enable_scroll();
}
});
І додайте ці функції з галамбалаза. Див.: Як тимчасово відключити прокрутку?
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;
}