<iframe>标签自适应浏览器窗口的解决方法,兼容ie7低版本,此方法没有跨域问题
最近碰上的项目都是后台项目,这样的,(下图是自己写着玩儿的,给easy ui 换了个样式)
金主爸爸要求,一个页面只能有一个滚动条,看上去是挺简单的,然而,从来没见过这么喜欢用iframe的老板啊,iframe的自适应是个大问题。
当浏览器缩小时,不完全显示内容,大写的尴尬~,或是出现多个滚动条。试过了很多方法,比如在父页面获取子页面的高度,然后填充父页面iframe的高度,然而,这种对ie并不友好。
或是由子页面控制父页面的iframe的高度,然而,这种工作量又太大。要每一个子页面都去设置一下。
好,废话不多说,下面是我的解决方法,仅供参考,大神若是有更好的解决方法,欢迎留言讨论,我只是小虾米。这种写法兼容ie7,再低版本未测试。
思路,由于iframe的特殊性,最好能够保持子页面与父页面内外不通信的状态。
由此我在iframe层外套了一层div这个div设置position: absolute;绝对定位,或是position: fixed,div的大小随着浏览器的大小改变而改变。
代码:
<div class="heightIframe" style="position: absolute;">
<iframe src="index-1.html" width="100%" height="100%" frameborder="0" scrolling="yes" ></iframe>
</div>
Jq代码
$(document).ready(function(){
$(window).resize(function() {
var a=$(window).height();//窗口高度
var b=a-130;//窗口高度减去导航栏,这个按照实际情况来。
var c=$(window).width();//窗口宽度
$(".heightIframe").height(b).width(c);//外层div的高宽。
});
$(window).resize();//随着窗口的变动而变动
});
在easy ui框架下的ifarme
框架本身也解决了一部分问题,但还是要调整下才完美。
思路也是一样的,不过要稍微改一下,将iframe设置position: absolute,外层div不动。
<div class="iframeBox">
<iframe src="Layout.html" frameborder="0" height="100%" width="100%" scrolling="yes" style="position: absolute"></iframe>
</div>
Jq代码与刚才那段一样,这边就不重复了。