我正在使用fancybox版本2.1.5。当我打开fancybox时,我注意到。fancybox-wrap div位于。fancybox-overlay div内。如果我在同一页面上打开另一个fancybox,则.fancybox-overlay div现在位于.fancybox-wrap div的上方和上方。
我对第一个和第二个fancybox的定义相同,如下所示:
$.fancybox({
href : '#my_div',
autoSize : true,
fitToView : false,
padding : 0,
fixed : true,
autoCenter : false,
topRatio : 0.5,
});
如果.fancybox-wrap div位于.fancybox-overlay div内,并且我滚动页面,则当fancybox内容大于窗口时,只有fancybox滚动背景内容才保持静态
但是,当我同时滚动fancybox和它后面的内容时,它在.fancybox-overlay之外。
如何防止页面向后滚动。
[在检查此问题中的DEMO时,与fancybox网站上的演示相比,环绕div位于重叠div之外。
首先,您引用的DEMO(我的演示)使用的是fancybox v2.0.6;从那以后,情况发生了变化。
其次,.fancybox-wrap
div在.fancybox-overlay
的内部还是外部取决于助手覆盖状态:
默认的值是true
,例如:
helpers: {
overlay : {
locked: true
}
}
...因此.fancybox-wrap
div将为[[INSIDE.fancybox-overlay
div。
false
,则.fancybox-wrap
div将为OUTSIDE
.fancybox-overlay
div。NOTICE
在第二种情况下[false
),您将可以滚动到fancybox后面的页面。[DEMO
使用v2.1.5beforeShow : function() {
// Move the wrap manually into overlay
$(".fancybox-wrap").appendTo(".fancybox-overlay");
// Add the missing classes to <html>
$("html").addClass("fancybox-margin fancybox-lock");
},
我正在使用叠加层locked:true和autoCenter:false来锁定背景并获得所需的位置。
最后,当在页面下方打开带有Ajax内容的FancyBoxes时,似乎FancyBox不会重置CSStop
值,并且我无法在回调中使用jQuery进行覆盖,因此我决定强制在FancyBox CSS:.fancybox-opened {z-index: 8030; top: 20px !important;}
这将打开所有FancyBoxes,第一个和后续的FancyBoxes,在页面下方的任何位置都从视口顶部开始20px。