【问题标题】:Fancybox + Flexslider only works if content not initially hiddenFancybox + Flexslider 仅在内容最初未隐藏时才有效
【发布时间】:2013-05-16 15:29:17
【问题描述】:

我想知道是否有人可以阐明为什么这对我不起作用。我正在尝试让 Flexslider 画廊在 Fancybox 灯箱中工作。一切正常,直到我尝试在初始加载时隐藏图库内容。我整理了一个简单的小提琴 (http://jsfiddle.net/skube/THyYe/1/) 来说明。一切正常(除了最初显示画廊内容)。当我在 CSS 中取消注释以下行以隐藏图库并重新运行时,它会中断。

/* #gallery {display: none;}  uncomment to see not working */

【问题讨论】:

  • 那么,它有效吗?任何反馈都会比我更能帮助你;)

标签: jquery fancybox fancybox-2 flexslider


【解决方案1】:

问题在于 Flexslider 使用自己的方法来计算视口的大小,然后计算滑块的大小以尝试响应。如果父容器隐藏 (display: none),那么 Flexslider 会因此类计算而失败,因此不会显示在 fancybox 中。

如果您打开自己的http://jsfiddle.net/skube/THyYe/1/ 并调整结果窗口的大小,您会看到在重新计算视口后会显示 Flexslider。

作为一种解决方法,我将在 inside 一个fancybox 的回调中初始化Flexslider。另外,我会使用 Flexslider 的回调来使父容器可见,这样大小计算就不会像这样失败:

$('.fancybox').fancybox({
    // optionally set dimensions
    // you may need to adjust these settings
    // width : 400, // or whatever needed
    // height: 300,
    autoSize: false, // keep this and let the slider to resize itself
    afterLoad: function () {
        $('#slider').flexslider({
            animation: "slide",
            start: function () {
                $("#gallery").show() // make parent container visible
            }
        });
    }
});

JSFIDDLE

【讨论】:

  • 不久前我遇到了一个非常相似的问题。我通过制作父 div 样式position:absolue;top:-1000px 来修复它。然后从 flexslider start 回调中,我删除了样式,因此 dom 结构恢复正常:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-03-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-09-23
  • 1970-01-01
相关资源
最近更新 更多