Fancybox: оверлей открывается внутри div по желанию, но не содержимое

В настоящее время у меня есть оверлей Fancybox, открывающийся внутри моего #main div по желанию, а не поведение по умолчанию при открытии внутри элемента body.

Я сделал это, как было предложено в нескольких потоках stackoverflow, изменив скрипт jquery.fancybox.js в этой строке:

this.overlay = $('<div class="fancybox-overlay"></div>').appendTo( parent && parent.length ? parent : 'body' );

к этому:

this.overlay = $('<div class="fancybox-overlay"></div>').appendTo( parent && parent.length ? parent : '#main' );

Это работает для позиционирования наложения.

Я хочу, чтобы Fancybox центрировал весь всплывающий контент в этом оверлее. Однако первое открывающееся содержимое Fancybox находится не в центре оверлея, а внутри body — такое неожиданное поведение иногда приводит к тому, что содержимое fancybox частично выходит за пределы оверлея. Последующие элементы fancybox центрируются внутри оверлея — только первый загруженный элемент центрируется на body.

Очевидно, что Fancybox прилагает немало усилий, чтобы вычислить размеры области просмотра и сделать возможным центрирование своего содержимого внутри элемента body, но в этом случае я хочу, чтобы все элементы были центрированы в моем целевом #main div, в пределах .fancybox-overlay.

Правка: "parent.lenth", опечатка в исходном файле jquery.fancybox.js, изменена на "parent.length", как указано djehrame ниже. К сожалению, поведение сохраняется.


person nimmolo    schedule 03.03.2014    source источник
comment
Вы уверены, что это не просто опечатка? parent.lenth должен быть parent.length   -  person Jeremy Ninnes    schedule 03.03.2014
comment
Спасибо - к сожалению, исправление этой опечатки не меняет поведение. Но вы правы, и эта опечатка есть даже в исходном файле jquery.fancybox.js, который я только что скачал.   -  person nimmolo    schedule 03.03.2014
comment
Чтобы было понятнее, оверлей позиционируется правильно. Это содержимое внутри неправильно расположено. Я не уверен, но я считаю, что Fancybox вычисляет позиция контента из позиции наложения, поскольку позиционирование контента работает должным образом для последующих элементов.   -  person nimmolo    schedule 03.03.2014
comment
ссылка Щелкните параметры в этом примере, чтобы увидеть fancybox   -  person nimmolo    schedule 03.03.2014
comment
Вы пробовали вариант parent API? Проверьте это stackoverflow.com/a/19689842/1055987, особенно № 2   -  person JFK    schedule 03.03.2014
comment
Спасибо JFK - опция parent, похоже, не управляет параметром, который я пытаюсь установить. Я думаю, вы могли бы сказать, что я пытаюсь изменить область действия — элемент DOM — внутри которого работает Fancybox (включая оверлей), с body на #main   -  person nimmolo    schedule 04.03.2014
comment
(выше продолжение комментария) … тогда как опция parent, кажется, добавляет новый элемент DOM. Я правильно понимаю?   -  person nimmolo    schedule 04.03.2014
comment
Ранее здесь был ценный комментарий, который, к сожалению, был удален, указывающий, что при первой загрузке .fancybox-wrap является родным братом элемента .fancybox-overlay, а после загрузки второго элемента галереи .fancybox-wrap является дочерним элементом of fancybox-overlay как и должно быть.   -  person nimmolo    schedule 04.03.2014