JQuery - Fancybox - проблема с изменением фоновой страницы
Fancybox загружается хорошо, и все открывается, как я хочу, но проблема возникает в фоновом режиме - она видима (и тревожит), что вся моя страница сдвигается ровно на 8 пикселей вправо, когда ящик загружается и возвращается в нормальное состояние положение при закрытии коробки.
Я не могу ссылаться на сайт, как на dev-сервер за брандмауэром нашей компании.
Я использую следующие скрипты: Fancybox, Quform и JQuery Banner Rotator. Вызов fancybox происходит внутри ротатора. Я не изменял ширины/высоты исходного jQuery fancybox CSS.
У меня ширина тела установлена на 100%, а маржа установлена на автоматическую, а внутренние div - с минимальной шириной 1138 пикселей и маржом, установленным на авто.
Кто-нибудь знает, где я должен искать решение проблемы?
Ответы
Ответ 1
Недавно у меня была очень похожая ситуация с Fancybox v2. Моя начальная страница содержала содержимое ниже складки и, следовательно, имела полосу прокрутки (возможно, OP тоже, это не понятно). Увольнение линии Fancybox вызвало тот же сдвиг в теле страницы и очистку полосы прокрутки; закрытие изображения Fancybox сдвинуло тело назад и снова включило полосу прокрутки.
Корректировки .fancybox-lock
не работали для меня, но при создании экземпляра объекта Fancybox был включен следующий параметр:
helpers: {
overlay: {
locked: false
}
}
Единственное предостережение - это не блокирует ваш Fancybox до центра страницы, если вы прокручиваете, то есть страница с видом Fancybox полностью прокручивается. Для меня это было меньше двух зол.
Ответ 2
У меня была такая же проблема в последнее время. Найдите .fancybox-lock
в CSS fancybox и измените его на:
.fancybox-lock {
overflow: hidden;
margin: 0 !important;
}
Voila!: D
Ответ 3
Вы можете отключить функцию блокировки:
$(".fancybox").fancybox({
helpers : {
overlay : {
locked : false
}
}
});
Работал для меня.
Ответ 4
Это известная проблема, здесь вы можете узнать больше: проблемы, fancyapps @GitHub
Я использую fancybox2 (версия 2.1.5).
Я решил проблему, слегка изменив файл jquery.fancybox.css:
Найдите раздел "Оверлейный помощник" (начинается с строки 165) и измените два правила:
.fancybox-lock {
/* overflow: hidden !important;*/
overflow-x: hidden !important;
overflow-y: scroll !important;
width: auto;
}
и второе правило:
.fancybox-lock .fancybox-overlay {
/* overflow: auto;
overflow-y: scroll;*/
overflow: hidden !important;
}
Это работает достаточно хорошо (imho), хотя страница прокручивается за наложением.
По крайней мере, подавляющий "смещающий правый" эффект подавляется.
Позже я обнаружил, что элементы, которые были расположены с "right: 0;" были сдвинуты влево на ширину вертикальной полосы прокрутки.
Это из-за права margin устанавливается fancybox.js-кодом, добавляя стиль node внутри элемента head.
Чтобы исправить проблему, просто измените одну строку кода внутри файла jquery.fancybox.js или файл jquery.fancybox-2.1.5-pack.js, в зависимости от того, какой из них вы используете.
в строке 2017 распакованной версии:
$("<style type='text/css'>.fancybox-margin{margin-right:" + (w2 - w1) + "px;}</style>").appendTo("head");
// change it to
$("<style type='text/css'>.fancybox-margin{margin-right: 0;}</style>").appendTo("head");
// perhaps comment out the complete line, I haven't testet it though
или в .pack файле (строка 46 возле EOL):
/* [much more code before] */ f("<style type='text/css'>.fancybox-margin{margin-right:"+(d-a)+"px;}</style>").appendTo("head")})})(window,document,jQuery);
// change it to:
/* [much more code before] */ f("<style type='text/css'>.fancybox-margin{margin-right:0;}</style>").appendTo("head")})})(window,document,jQuery);
// or try to remove the "f().appendTo()"-part completely (untested)
Ответ 5
Я просто решил это, добавив в свой элемент body "margin-right: auto! important":) Это по правилам Fancyboxes имеет собственный margin-right: 0.
Ответ 6
В версии 2.1.3 прокомментируйте строки 1802-1807 (ниже) в jquery.fancybox.js.
if (!this.overlay) {
this.margin = D.height() > W.height() || $('body').css('overflow-y') === 'scroll' ? $('body').css('margin-right') : false;
this.el = document.all && !document.querySelector ? $('html') : $('body');
this.create(opts);
}
Ответ 7
Я использовал fancybox v.2.1.4 с изображением фиксированного, центрированного фона для тела и всегда отображал вертикальную полосу прокрутки.
body{
background: url('../img/sfondo.jpg') fixed center top;
overflow-y: scroll;
}
Несмотря на то, что я заставил отображать полосу прокрутки, у меня была проблема сдвига фонового изображения с firefox на mac (хром и сафари были в порядке, так как полосы прокрутки львов не занимают места внутри страницы) и т., ff, chrome на окнах.
Итак, я заметил, что если я вручную установил x-offset вместо мира center в свойстве фона проблема исчезла, поэтому я справился с ним с небольшим количеством jquery в HEAD страницы:
<script>
function centerTheBackground(){
var pageWidth = $(window).width();
var imageWidth = 1920; //set here the width of the background image
var xOffset = (imageWidth/2) - (pageWidth/2);
jQuery('body').css('background-position', '-' + xOffset + "px top");
}
jQuery(function($){
centerTheBackground();
});
$(window).resize(function() {
centerTheBackground(); //re-center the background image during window resizing
});
</script>
Ответ 8
Ну, я просто прокомментировал следующую строку в fancybox CSS
/*.fancybox-lock {
overflow: hidden;
}
*/
И он начал нормально работать:
- fancyBox - плагин jQuery
- версия: 2.1.4 (чт, 10 янв 2013)
Ответ 9
Это сделало это для меня...
.fancybox-lock {
overflow: hidden !important;
padding-right: 17px;
}
.fancybox-lock body {
overflow: hidden !important;
}
Ответ 10
Вы столкнулись с этой проблемой для полосы прокрутки! просто проследите ширину полосы прокрутки и используйте эту ширину как ".fancybox-lock" margin-right ".
например,
.fancybox-lock{
margin-right: [your calculated width] !important;
}
Это решит вашу проблему наверняка, потому что у меня также была эта проблема.
Ответ 11
Если ваша проблема связана с исправлением элементов, когда Fancybox открывается, просто добавьте padding-right: 17px к тем элементам вашего CSS, которые содержатся в классе .fancybox-lock.
Ответ 12
Я использую fancy box 3 и имел ту же самую проблему, потому что моя основная обертка была абсолютной положением.
убедитесь, что у вас нет обертки, и она должна работать нормально.