关闭上一个页面后在页面上打开另一个花式盒子

问题描述 投票:2回答:2

我正在使用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之外。

jquery fancybox fancybox-2
2个回答
1
投票

首先,您引用的DEMO(我的演示)使用的是fancybox v2.0.6;从那以后,情况发生了变化。

其次,.fancybox-wrap div在.fancybox-overlay的内部还是外部取决于助手覆盖状态:

默认的值是true,例如:

helpers: {
    overlay : {
        locked: true
    }
}

...因此.fancybox-wrap div将为[[INSIDE.fancybox-overlaydiv。

另一方面,如果您在自定义脚本中将值设置为false,则.fancybox-wrap div将为

OUTSIDE

.fancybox-overlaydiv。

NOTICE

在第二种情况下[false),您将可以滚动到fancybox后面的页面。

[DEMO

使用v2.1.5

0
投票
在GitHub上,FancyBox的作者建议尝试使用FancyBox 3 beta来查看问题是否已解决。对于我来说,尚不适合黄金时间(在撰写此评论时),因此我已通过以下方式解决了该错误:

beforeShow : 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不会重置CSS

top

值,并且我无法在回调中使用jQuery进行覆盖,因此我决定强制在FancyBox CSS:.fancybox-opened {z-index: 8030; top: 20px !important;}
这将打开所有FancyBoxes,第一个和后续的FancyBoxes,在页面下方的任何位置都从视口顶部开始20px。
© www.soinside.com 2019 - 2024. All rights reserved.