在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.x
和v2.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。