动态调整iframe的大小和位置

时间:2012-06-07 03:36:33

标签: javascript iframe positioning resize

我对网页设计和脚本编写很新。我正在尝试建立一个顶部有横幅框架,左边是菜单,右下角有大部分主要内容的网站。我希望横幅按浏览器大小动态调整大小。我在IE8上完成了这个,但它在IE9上无法正确查看,而且我想要一个跨越框架边框的背景图像我正在尝试iframe,但不能让它们填满浏览器窗口。偶尔,我可以使iframe动态改变大小和/或位置,但它不可靠。我已经尝试了各种位置类型以及包装iframe并尝试调整大小和定位它们。这是我所拥有的最成功的代码,请原谅任何冗余,未引用和注释的代码,因为它是失败尝试的剩余部分。

<html>
<head>
<meta http-equiv="Content-type" content="text/html;charset=UTF-8">
<title>Mountain Girl Gallery</title>
<style media="screen" type="text/css">
<!--
#layer1 { position: absolute; top: 0px; left: 0px; width: 1000px; height: 95px; visibility: visible}
--!>
<!--
#layer2 { position: absolute; top: 95px; left: 500px; width: 100px; height: 505px; visibility: visible}
--!>
<!--
#layer3 { position: absolute; top: 95px; left: 100px; width: 900px; height: 505px; visibility: visible}
--!>
</style>
<script type="text/javascript">
function frameResize(){
var winW;
var winH;
if (document.body && document.body.offsetWidth) {
winW = document.body.offsetWidth;
winH = document.body.offsetHeight;
}
if (document.compatMode=='CSS1Compat' &&
document.documentElement &&
document.documentElement.offsetWidth ) {
winW = document.documentElement.offsetWidth;
winH = document.documentElement.offsetHeight;
}
if (window.innerWidth && window.innerHeight) {
winW = window.innerWidth;
winH = window.innerHeight;
}

var bframe=document.getElementById('bannerframe');
//var menuframe=document.getElementById('menu');
var mframe=document.getElementById('main');

//var f1=document.getElementById('bannerframe');
//var f2=document.getElementById('menu');
//var f3=document.getElementById('main');

bframe.style.width=winW;
bframe.style.height=winH*.2;
//menuframe.style.width=winW*.15;
//menuframe.style.height=winH*.8;
//menuframe.style.top=(winH*.2)+"px";
mframe.style.width=winW*.85;
mframe.style.height=winH*.8;
mframe.style.top=(winH*.2)+"px";
mframe.style.left=(winW*.15)+"px";

//f1.style.width=bframe.style.width;
//f1.style.height=bframe.style.height;
//menuframe.style.width=winW*.15;
//menuframe.style.height=winH*.8;
//f2.style.top=menuframe.style.top;
//f3.style.width=mframe.style.width;
//f3.style.height=mframe.style.height;
//f3.style.top=mframe.style.top;
//f3.style.left=mframe.style.left;
}
</script>
<script type="text/javascript">
function setSize(){
frameResize();
if(window.attachEvent)
window.attachEvent("onresize",frameResize);
else if(window.addEventListener)
window.addEventListener("resize",frameResize,false);
}
</script>
</head>
<body
style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); background-image: url(mountain%20girl%20background.JPG); background-attachment: fixed; background-position: 50%; height: 657px;"
onresize="frameResize()">
<div align="center">
<iframe style="position: absolute; top: 0px; left: 0px; width: 1000px; height: 200px;"
src="banner.html" name="bannerframe" id="bannerframe" allowtransparency="true" frameborder="0"></iframe></div>

<iframe style="position: relative; top: 200px; left: 0px;"
src="menu.html" name="menu" id="menu" allowtransparency="true"
frameborder="0"></iframe>
<iframe style="position: relative; top: 200px; left: 150px; width: 850px; height: 505px;"
src="home.html" name="main" id="main" allowtransparency="true" onload="setSize()" frameborder="0"></iframe>
</body>
</html>

我对任何其他建议持开放态度,但我不想使用服务器端脚本。

1 个答案:

答案 0 :(得分:0)

好在这几天不推荐使用iframe(框架:NO方式!) 所以几年前我在an example如何加载内容而不刷新使用ajax。通过这种方式,您可以更好地控制CSS,然后将其与其他代码混合使用。

干杯。

PS:如果你可以设置链接来检查你的工作,我会很棒!。