注意:我必须使用wrap
Firefox 的元素.出于某种原因,在Firefox中将对象缩小75%时,出于布局原因,它仍然使用图像的原始大小.(尝试从上面的示例代码中删除div,你会明白我的意思.)
我从这个问题中找到了一些.
经过几个小时的努力试图让它在IE8,9和10中工作之后,这对我有用.
截至2014年1月7日,这个精简版CSS适用于FF 26,Chrome 32,Opera 18和IE9 -11:
.wrap { width: 320px; height: 192px; padding: 0; overflow: hidden; } .frame { width: 1280px; height: 786px; border: 0; -ms-transform: scale(0.25); -moz-transform: scale(0.25); -o-transform: scale(0.25); -webkit-transform: scale(0.25); transform: scale(0.25); -ms-transform-origin: 0 0; -moz-transform-origin: 0 0; -o-transform-origin: 0 0; -webkit-transform-origin: 0 0; transform-origin: 0 0; }
对于IE8,设置宽度/高度以匹配iframe,并将-ms-zoom添加到.wrap容器div:
.wrap { width: 1280px; /* same size as frame */ height: 768px; -ms-zoom: 0.25; /* for IE 8 ONLY */ }
只需使用您最喜欢的浏览器嗅探方法来有条件地包含适当的CSS,请参阅是否有办法在*.css文件中执行浏览器特定的条件CSS?一些想法.
IE7是一个失败的原因,因为在IE8之前不存在-ms-zoom.
这是我测试过的实际HTML:
http://jsfiddle.net/esassaman/PnWFY/
我刚刚进行了测试,对我来说,其他解决方案均无效。正如我所期望的,我只是尝试了一下,它就可以在Firefox和Chrome上完美运行:
和CSS:
.wrap { width: 640px; height: 480px; overflow: hidden; } iframe { width: 76.92% !important; height: 76.92% !important; -webkit-transform: scale(1.3); transform: scale(1.3); -webkit-transform-origin: 0 0; transform-origin: 0 0; }
这会将所有内容缩放30%。当然,宽度/高度百分比需要相应地调整(1 / scale_factor)。
跟帖到LXS的回答:我注意到这里有两个问题zoom
,并--webkit-transform
在同一时间标签似乎做双变焦之类的效果混淆铬(15.0.874.15版).我能够通过更换来解决此问题zoom
有-ms-zoom
(只针对在IE),让Chrome浏览器进行只使用的--webkit-transform
标签,而茅塞顿开.
您不需要使用其他标记包装iframe.只需确保将iframe的宽度和高度增加与向下缩放iframe相同的量即可.
例如,将iframe内容缩放到80%:
#frame { /* Example size! */ height: 400px; /* original height */ width: 100%; /* original width */ } #frame { height: 500px; /* new height (400 * (1/0.8) ) */ width: 125%; /* new width (100 * (1/0.8) )*/ transform: scale(0.8); transform-origin: 0 0; }
基本上,要获得相同大小的iframe,您需要缩放尺寸.
html {zoom:0.4;}? - )
80%是0.8,但这是一个专有的Microsoft,所以可能不适合.它也只有在加载到框架中的文档可以编辑时才有效,这是不太可能的.
8> 小智..:
以为我会分享我提出的内容,使用上面给出的大部分内容.我没有检查Chrome,但它可以在IE,Firefox和Safari中使用,据我所知.
此示例中的细节偏移和缩放因子适用于缩小和居中两个网站的iframes中的Facebook标签(810px宽度).
使用的两个站点是wordpress站点和ning网络.我对html不是很好,所以这可能做得更好,但结果似乎很好.
如果希望在调整窗口大小时缩放iframe及其内容,则可以对窗口的resize事件以及iframe onload事件设置以下内容。
function() { var _wrap#wrap').width(); var _frame#frame')[0].contentDocument).width(); if(!this.contentLoaded) this.initialWidth=_frameWidth; this.contentLoaded=true; var frame=$('#frame')[0]; var percent=_wrapWidth/this.initialWidth; frame.style.%"; frame.style.%"; frame.style.zoom=percent; frame.style.webkitTransform='scale('+percent+')'; frame.style.webkitTransformOrigin='top left'; frame.style.MozTransform='scale('+percent+')'; frame.style.MozTransformOrigin='top left'; frame.style.oTransform='scale('+percent+')'; frame.style.oTransformOrigin='top left'; };
这将使iframe及其内容缩放到wrap div的100%宽度(或您想要的任何百分比)。另外,您不必将框架的css设置为硬编码值,因为它们都是动态设置的,您只需要担心想如何显示wrap div。
我已经测试过了,它可以在chrome,IE11和firefox上使用。