在 TrueBlueAussie的解决方案中,iframe会根据DIV的宽度和高度按比例缩放。这是我喜欢的修改版本: JSFiddle


所以我的问题是,如何根据iframe的宽度和高度自动按比例缩放iframe中的内容(使用解决方案调整后)?当我指的是内容时,我指的是其中的所有内容,例如图像,文本等。


经过研究,我偶然发现了一个可以解决我的问题的属性,但之后使用它与解决方案,它没有任何影响。


样式/ CSS属性:
-ms-zoom:0.75;
 -moz-transform:scale(0.75);
 -moz-transform-origin:0 0;
 -o-transform:scale (0.75);
 -o-transform-origin:0 0;
 -webkit-transform:scale(0.75);
 -webkit-transform-origin:0 0;



 在我看来,效果仅在宽度和高度保持不变时才采取行动。我正在尝试实现属性中使用的缩放效果,因此我不会动态干扰内部的内容。


我是否必须使用JavaScript来实现此目的?我已经坚持了这个问题大约一个星期,似乎无法找到解决方案。


我理解同源政策,在iframe中使用外部网站时。我对加载外部来源的内容不感兴趣。

答案 0 :(得分:1)
一个非常简单的解决方案是将度量设置为百分比。如果你不能这样工作,我认为transform
是你最好的解决方案。您的resize
函数已经完成了部分计算,您需要添加variable
来获取width
的初始iframe
,而不是通过设置调整大小新的width
和height
,您可以使用newWidth
变量来设置比例因子,并在tranform css
中使用它。像这样:
在iframe
添加到DOM后立即设置初始宽度变量:
var iframe = document.getElementById('frame'),
iframedoc = iframe.contentDocument || iframe.contentWindow.document;
iframedoc.body.innerHTML = source, iframeinitialwidth = $('iframe').width();
在调整大小时,你使用newWidth来计算你应该使用的比例,并使用transform调整大小(我只使用-webkit,但它应该适用于导航器支持转换):
...
//$iframe.width(newWidth);
//$iframe.height(newHeight);
});
var scaleFactor = newWidth/iframeinitialwidth
$('iframe').css({'-webkit-transform': 'scale('+scaleFactor+')', '-webkit-transform-origin': '0 0'})
...