【问题标题】:Fancybox - Combining images and iframes in one galleryFancybox - 在一个画廊中组合图像和 iframe
【发布时间】:2013-10-06 19:09:54
【问题描述】:

我正在处理的项目中有一个“附加文件”容器,该容器显示已附加到特定事件的文件的缩略图。当用户单击缩略图时,会打开一个花式框窗口,向他们显示附加图像或文本文件的更大预览。

现在,我的解决方案包括将 fancybox 类型设置为 iframe,如下所示:

$(".fancybox_group").fancybox({
    type : 'iframe'
});

这将很好地显示文本文件和图像,但图像周围有这个巨大的白色边框。我在谷歌上做了一些搜索,找到了this solution,但它对我不起作用。这只是创建了两个独立的 fancybox 实例;一个用于图像,一个用于 iframe。我希望能够滚动浏览一个画廊中的所有附件。这可能吗?

Here is an example on jsfiddle 显示我想要实现的目标。我从一个 fancybox 示例中借用了代码/图像,并在文本文档中添加了另一个缩略图链接。这就是我在我的项目中设置它的方式。任何见解将不胜感激。

【问题讨论】:

    标签: javascript jquery fancybox


    【解决方案1】:

    您使用的是 fancybox v2.0.6,因此其他解决方案可能已过时。

    要实现你想要的很简单,只需这样做:

    1)。按此顺序加载所有 javascript 文件:

    • jQuery
    • Fancybox js 文件
    • Fancybox 媒体 js 文件(您可以在 helpers 目录中找到此文件)

    2)。加载fancybox css文件

    3)。为您要在 fancybox 中打开的每种类型的对象设置html,例如:

    图片:

    <a class="fancybox" data-fancybox-group="gallery" href="image01.jpg"><img src="image01thumb.jpg" alt="" /></a>
    <a class="fancybox" data-fancybox-group="gallery" href="image02.jpg"><img src="image02thumb.jpg" alt="" /></a>
    

    如果您的图片中的href 类似于href='/attachments/76',fancybox 不会知道它是image,因为缺少扩展名(jpg、png、gif)。将 fancybox.image 类添加到您的 html 中,例如:

    <a class="fancybox fancybox.image" data-fancybox-group="gallery" href="/attachments/76"><img src="thumb76.jpg" alt="" /></a>
    

    Ajax 内容(html 或 txt 文件):

    <a class="fancybox fancybox.ajax" data-fancybox-group="gallery" href="sample.html">open ajax 1</a>
    <a class="fancybox fancybox.ajax" data-fancybox-group="gallery" href="sample.txt">open ajax 2</a>
    

    (请注意第二类fancybox.ajax ...另外,您可以在我的示例中使用缩略图而不是文本)

    通过 iframe 的外部页面:

    <a class="fancybox fancybox.iframe" data-fancybox-group="gallery" href="http://domain.com/page.html">open page in iframe mode</a>
    <a class="fancybox fancybox.iframe" data-fancybox-group="gallery" href="http://other.com/page2.html">open other page in iframe mode</a>
    

    (注意第二课fancybox.iframe

    Youtube 视频:

    <a class="fancybox" data-fancybox-group="gallery" href="http://www.youtube.com/watch?v=2matH4B9bTo">open youtube video</a>
    

    (请注意,我们不需要添加任何额外的类,因为我们使用的是 fancybox 媒体助手)

    注意:我们使用data-fancybox-group="gallery" 属性来设置同一个图库中的所有元素(尽管您应该设置HTML5 DOCTYPE

    最后,只需使用这个脚本:

    $(".fancybox").fancybox();
    

    您可能想要添加其他 API 选项,例如:

    $(".fancybox").fancybox({
      // other API options
      padding: 0 // optional etc.
    });
    

    如果您还想使用 buttonsthumbnails 帮助程序,请不要忘记加载正确的 js 和 css 文件。还将helpers 选项添加到您的脚本中,例如:

    $(".fancybox").fancybox(
     helpers : {
      buttons : {},
      thumbs : {
       width : 50,
       height : 50
      }
     }
    });
    

    最后说明:这是fancybox v2.0.6+

    【讨论】:

    • 我认为这会奏效,但我正在努力解决一些问题。我正在检索存储在 url 中的图像,因此 href 的格式为 href='/attachments/76'。如果我单击图像,Fancybox 甚至都不会触发,但是如果我单击具有 fancybox fancybox.iframe 类的任何内容,它就可以正常工作。关于如何解决这个问题的任何想法?其他任何时候,我都必须将fancybox type 显式设置为image
    • 因为您的 URL 没有图像扩展名 (jpg,png,gif),您必须告诉 fancybox 它是一个图像。您可以为这些图像创建一个单独的脚本并添加选项type: "image",如$(".fancy_image").fancybox({type: "image"});
    • 这就是我认为的问题,但是现在当我在正常的$(".fancybox").fancybox(); 脚本之后添加$('.fancy_image).fancybox({type: "image"}); 时,图像仍然不会显示。我是否需要在第一次调用 fancybox 时进行更改?
    • 顺便说一句,保持相同的data-fancybox-group="gallery" 也将包括图库中的图像,无论它们使用另一个脚本和另一个class
    • 很高兴听到,如果有人遇到同样的问题,我会在我的回答中添加注释。感谢您的反馈。
    猜你喜欢
    • 2015-09-09
    • 2014-03-19
    • 1970-01-01
    • 2012-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-09
    相关资源
    最近更新 更多