标准Fancybox在整个身体上放置一个叠加层。在fancybox JS或CSS中是否有一种方法可以让它只将叠加层放在页面的某个元素上?
由于 d。
答案 0 :(得分:3)
根据您的要求替换Fancybox.js
中的以下行
overlay.css('height', $(document).height());
到
overlay.css('height', $("yourdiv").height());
overlay.css('height', $("yourdiv").width());
答案 1 :(得分:0)
最后我重写了以下部分:
a.helpers.overlay = {
overlay: null,
update: function () {
var a, c;
this.overlay.width(0).height(0);
e.browser.msie ? (a = Math.max(m.documentElement.scrollWidth, m.body.scrollWidth), c = Math.max(m.documentElement.offsetWidth, m.body.offsetWidth), a = a < c ? l.width() : a) : a = q.width();
var w = $('#page-introduction').width();
var h = $('#page-introduction').height();
this.overlay.width(w).height(h)
$('#fancybox-overlay').offset($('#page-introduction').offset())
},
beforeShow: function (b) {
this.overlay || (b = e.extend(!0, {
speedIn: "fast",
closeClick: !0,
opacity: 1,
css: {
background: "black"
}
},
b), this.overlay = e('<div id="fancybox-overlay"></div>').css(b.css).appendTo("body"), this.update(), b.closeClick && this.overlay.bind("click.fb", a.close), l.bind("resize.fb", e.proxy(this.update, this)), this.overlay.fadeTo(b.speedIn, b.opacity))
},
onUpdate: function () {
this.update()
},
afterClose: function (a) {
this.overlay && this.overlay.fadeOut(a.speedOut || 0, function () {
e(this).remove()
});
this.overlay = null
}
};
页面介绍是我想要覆盖的元素,并且此元素的偏移用于偏移叠加。
罗伯特
答案 2 :(得分:0)
helpers: {
overlay : {
css : {
'height': $('.fancyboxwrapper').height(),
'width': $('.fancyboxwrapper').width(),
'top': $('.fancyboxwrapper').offset().top,
'left': $('.fancyboxwrapper').offset().left,
'overflow': 'hidden'
}
}
}
这打开了包装器div内的叠加层,并将图像的大小调整为包装器大小。
答案 3 :(得分:0)
在jquery.fancybox.js中找到这一行,并将appendTo更改为您选择的div,如果要将其定位在该div中,则需要将.fancybox-overlay定位更改为绝对。
this.overlay = $('<div class="fancybox-overlay"></div>').appendTo( ".yourdiv" );