在Fancybox中自动调整高度

为了不劫持其他post我决定开始自己的post。 我已经搞砸了几天,无法弄清楚如何让Fancybox iFrame的高度自动调整到内容大小。 这是我如何称呼它:

  $(document).ready(function() { $(".various").fancybox()({ maxWidth : 713, minHeight : 250, fitToView : false, autoSize : true, autoScale : true, closeClick : true, openEffect : 'fade', closeEffect : 'fade', scrolling : false, padding : 0, }); });  

我认为设置minHeight和autoScale可以做到,但事实并非如此。 并使用resize(); 什么也没做。

谢谢大家!

首先,我希望你理解当你说“Fancybox iFrame”时你的意思,这意味着你正在使用fancybox的选项iframe打开外部html / php文件,要么将其设置为链接中的class ,如:

 open external file in fancybox 

(我假设您使用的是fancybox v2.x因为脚本中的选项)…或者作为自定义脚本中的选项:

 $(".fancybox").fancybox({ width: 620, // or whatever heigh: 320, type: "iframe" }); 

其次,您需要注意fancybox v1.3.xv2.x选项彼此不兼容。 例如,您在脚本中使用fitToView (fancybox v2.x)和autoScale (v1.3.x)。 如果您确实使用的是fancybox v2.x,则无法识别autoScale

第三, resize()既不是fancybox v1.3.x或v2.x的选项。 如果使用v2.x,则应该使用$.fancybox.update()

最后,在iframe模式下打开时,我认为“自动”调整fancybox的唯一可能(我应该说是“最简单”)方式是:

  • 您应该控制要打开的https://stackoverflow.com/questions/10996212/auto-height-resizing-in-fancybox/external.html页面(您应该拥有它并最终在同一个域中运行),这样您就可以添加fancyboxresize所需的元素。 其他不属于您的页面(例如picssel.com )将不允许您自动调整iframe的大小(您可以手动调整它们的大小,但我认为这不是主意。)
  • 你应该使用fancybox至少2.0.6+

如何?

编辑您的https://stackoverflow.com/questions/10996212/auto-height-resizing-in-fancybox/external.html文件并将尺寸设置为标签

  

(您可能只想指定height属性)

然后使用beforeShow的回调选项从iframe获取维度,如:

  beforeShow: function(){ this.width = $('.fancybox-iframe').contents().find('html').width(); this.height = $('.fancybox-iframe').contents().find('html').height(); } 

另外, fitToView应该设置为false

检查https://stackoverflow.com/a/10776520/1055987以获取示例代码,其中还包含演示。

我知道这是一个老线索,但我很肯定这将有助于其他在这里降落的人。 即使您无法控制iframe内容,也可以将fitToView参数保留为默认值( true )并在窗口大小调整上调用Fancybox update()方法:

$(window).resize(function() { $.fancybox.update(); }); 但是,如果您同时显示其他内容(例如图像pdfs等),Fancybox会自动将它们调整为屏幕大小。 在这种情况下,您当然可以为iframe和具有不同参数的图像初始化fancybox。