FancyBox показывает ваше позиционирование в течение доли секунды, поскольку существует условие гонки между событием, которое вертикально центрирует оболочку FancyBox (#fancybox-wrap
), и обратным вызовом onComplete.Обычно onComplete заканчивается первым, поэтому css({"top": 80 +"px"})
перезаписывается.Вы можете попробовать любое количество способов исправить это, но я предпочитаю добавлять правило CSS наComplete, а не форсировать положение каждого FancyBox, как это делает решение алгоритма.
'onComplete' : function () {
// Create a pseudo-unique ID - this is actually pretty weak and you may want to use a more involved method
var dt = new Date();
var className = ('cl'+dt.getTime()).substr(0,10); // Create a unique class name
// Create a style element, set the contents, and add it to the page header
var style = document.createElement('style');
jQuery(style).attr('type','text/css').html('.'+className+' { top: 80px !important; }').appendTo(jQuery('head'));
// Add the pseudo-unique class name to the FancyBox wrapper to apply the CSS
jQuery('#fancybox-wrap').addClass(className);
}
Возможно, вы захотите изучить лучше уникальный идентификатор для этого, но этого было достаточно для моих нужд.Обратите внимание, что этот ответ относится к FancyBox v1.x (я использовал v1.3.4).v2.x может иметь другой логический поток, а DOES имеют разные обратные вызовы.Вместо использования onComplete, в v2.x вам нужно будет использовать afterLoad или afterShow в соответствии с FancyBox docs .