添加了 Fancybox2 不需要的 fancybox-margin class

Fancybox2 unwanted fancybox-margin class added

当我点击一个 ajax fancybox 时,我有一个加载器叠加层显示。 但总有一个 fancybox class 添加到它。

这里是 fiddle.

<div class="loading hide">Loading&#8230;</div>
<a class="fancybox fancybox.ajax" href="http://fancyapps.com/fancybox/demo/1_b.jpg">
    click me
</a>

$('.fancybox').fancybox({
    beforeLoad: function () {
        $('.loading').removeClass('hide');
    },
    beforeShow: function () {
        $('.loading').addClass('hide');
    }
});

当您点击 link,在结果中显示来源时,添加了一个 fancybox-margin

这个class只有在.loading元素有position:fixed

的时候才添加

有什么方法可以告诉 fancybox 不要添加这个 class?

只能通过修改源码。删除这些行 (1833-1835):

                $('*').filter(function(){
                    return ($(this).css('position') === 'fixed' && !$(this).hasClass("fancybox-overlay") && !$(this).hasClass("fancybox-wrap") );
                }).addClass('fancybox-margin');

你可以看看Fancybox的代码,把下面的注释掉:

if (this.margin !== false) {
  $('*').filter(function(){
    return ($(this).css('position') === 'fixed' && !$(this).hasClass("fancybox-overlay") && !$(this).hasClass("fancybox-wrap") );
  }).addClass('fancybox-margin');

  this.el.addClass('fancybox-margin');
}

但要小心龙 - 我不知道这会对弹出窗口的位置产生什么影响。

您最好先查看 css 文件并与检查器一起玩,看看它的作用。

您不需要破解原始的 fancybox js 文件。如果你这样做,你将不得不在更新新版本的那天再次这样做。

只需添加给你自定义的fancybox初始化脚本选项

helpers: {
    overlay: {
        locked: false
    }
}

并且classfancybox-margin不会被添加