框架集在 IE8 中不起作用
我构建了一个框架集,旨在将网页置于浏览器窗口的中间。
<html>
<frameset rows="100%,567px,100%" border="0">
<frame src="blank.html" noresize="noresize" scrolling="yes">
<frameset cols="100%,1128px,100%" border="0">
<frame src="blank.html" noresize="noresize">
<frame src="webpage.html" noresize="noresize">
<frame src="blank.html" noresize="noresize">
</frameset>
<frame src="blank.html" noresize="noresize" scrolling="yes">
<noframes>
<body>Page requires a frame-supporting browser.</body>
</noframes>
</frameset>
</html>
Blank 是一个空的 html 文档。 这在 Firefox 和 IE6 中都表现出色,但在 IE8 中它只显示一个白色页面,即空白.html。 为什么它与 Firefox 中的显示不一样?
编辑:如果没有我的代码,这显然无法解决,所以就在这里,排除了 doctype 和 html 标签以及其他一些位。 我已经尝试过你的解决方案,但它仍然没有垂直居中。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta http-equiv="imagetoolbar" content="no">
<title>Untitled Document</title>
<style type="text/css">
<!--
body {
margin-left: 0px;
margin-top: 0px;
margin-right: 0px;
margin-bottom: 0px;
background-image: url(xxxbackground.gif);
}
#divInteraction {
position:absolute;
width:640px;
height:480px;
z-index:1;
left: 460px;
top: 47px;
overflow: hidden;
}
#divVideo {
position:absolute;
width:424px;
height:284px;
z-index:2;
left: 13px;
top: 101px;
overflow: visible;
}
#imgInteraction {
}
#iframeInteraction {
display: none;
}
-->
</style>
</head>
<body>
<div id="divInteraction">
<iframe id="iframeInteraction" width="100%" height="100%" ></iframe>
<img id="imgInteraction" src="powerpoint_pic_0.jpg" />
</div>
<div id="divVideo">
<object id="wmvVideo" width="424" height="284" classid="CLSID:22D6F312-B0F6-11D0-94AB-0080C74C7E95" codebase="http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=6,4,7,1112" standby="" type="application/x-ms-wmp" VIEWASTEXT>
<param name="AutoSize" value="false" />
<param name="ShowStatusBar" value="0" />
<param name="DefaultFrame" value="x" />
<param name="ShowControls" value="1" />
<param name="ShowAudioControls" value="1" />
<param name="ShowPositionControls" value="0" />
<param name="ShowTracker" value="1" />
<param name="ShowDisplay" value="0" />
<param name="ShowCaptioning" value="0" />
<param name="ShowGoToBar" value="0" />
<param name="ControlType" value="2" />
<param name="Autostart" value="1" />
<param name="InvokeUrls" value="1" />
<param name="AnimationAtStart" value="0" />
<param name="TransparentAtStart" value="0" />
<param name="SendStateChangeEv" value="1" />
<param name="SendOpenChangeEv" value="1" />
<param name="SendPlayChangeEv" value="1" />
<param name="AllowChangeCtrlType" value="1" />
<param name="AllowChangeDisplaySize" value="1" />
<param name="AllowScan" value="1" />
<param name="AutoRewind" value="1" />
<param name="PlayCount" value="1" />
<param name="Volume" value="0" />
<param name="Filename" value="http://www.example.com/example/example.wmv"/>
<embed type="application/x-mplayer2"
pluginspage="http://www.microsoft.com/windows/windowsmedia/download/"
name="Player1NS"
AutoSize="false"
ShowStatusBar="0"
DefaultFrame="x"
ShowControls="1"
ShowTracker="1"
ShowDisplay="0"
ShowCaptioning="0"
ShowGoToBar="0"
Autostart="1"
AnimationAtStart="0"
TransparentAtStart="0"
PlayCount="1"
Volume="0"
Filename="http://www.example.com/example/example.wmv"
ShowAudioControls="1"
ShowPositionControls="0"
width="424"
height="284">
<br />
</embed>
</object>
</div>
</body>
</html>
I have constructed a frameset which is meant to center a webpage in the middle of the browser window.
<html>
<frameset rows="100%,567px,100%" border="0">
<frame src="blank.html" noresize="noresize" scrolling="yes">
<frameset cols="100%,1128px,100%" border="0">
<frame src="blank.html" noresize="noresize">
<frame src="webpage.html" noresize="noresize">
<frame src="blank.html" noresize="noresize">
</frameset>
<frame src="blank.html" noresize="noresize" scrolling="yes">
<noframes>
<body>Page requires a frame-supporting browser.</body>
</noframes>
</frameset>
</html>
Blank is an empty html document. This works brilliantly in both Firefox and IE6, but in IE8 it simply shows a white page, namely the blank.html. Why is it not showing the same as in Firefox?
EDIT: This could evidently not be solved without my code, so here it is, with doctype and html tags and a few other bits excluded. I've tried your solution, but it still doesn't center vertically.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta http-equiv="imagetoolbar" content="no">
<title>Untitled Document</title>
<style type="text/css">
<!--
body {
margin-left: 0px;
margin-top: 0px;
margin-right: 0px;
margin-bottom: 0px;
background-image: url(xxxbackground.gif);
}
#divInteraction {
position:absolute;
width:640px;
height:480px;
z-index:1;
left: 460px;
top: 47px;
overflow: hidden;
}
#divVideo {
position:absolute;
width:424px;
height:284px;
z-index:2;
left: 13px;
top: 101px;
overflow: visible;
}
#imgInteraction {
}
#iframeInteraction {
display: none;
}
-->
</style>
</head>
<body>
<div id="divInteraction">
<iframe id="iframeInteraction" width="100%" height="100%" ></iframe>
<img id="imgInteraction" src="powerpoint_pic_0.jpg" />
</div>
<div id="divVideo">
<object id="wmvVideo" width="424" height="284" classid="CLSID:22D6F312-B0F6-11D0-94AB-0080C74C7E95" codebase="http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=6,4,7,1112" standby="" type="application/x-ms-wmp" VIEWASTEXT>
<param name="AutoSize" value="false" />
<param name="ShowStatusBar" value="0" />
<param name="DefaultFrame" value="x" />
<param name="ShowControls" value="1" />
<param name="ShowAudioControls" value="1" />
<param name="ShowPositionControls" value="0" />
<param name="ShowTracker" value="1" />
<param name="ShowDisplay" value="0" />
<param name="ShowCaptioning" value="0" />
<param name="ShowGoToBar" value="0" />
<param name="ControlType" value="2" />
<param name="Autostart" value="1" />
<param name="InvokeUrls" value="1" />
<param name="AnimationAtStart" value="0" />
<param name="TransparentAtStart" value="0" />
<param name="SendStateChangeEv" value="1" />
<param name="SendOpenChangeEv" value="1" />
<param name="SendPlayChangeEv" value="1" />
<param name="AllowChangeCtrlType" value="1" />
<param name="AllowChangeDisplaySize" value="1" />
<param name="AllowScan" value="1" />
<param name="AutoRewind" value="1" />
<param name="PlayCount" value="1" />
<param name="Volume" value="0" />
<param name="Filename" value="http://www.example.com/example/example.wmv"/>
<embed type="application/x-mplayer2"
pluginspage="http://www.microsoft.com/windows/windowsmedia/download/"
name="Player1NS"
AutoSize="false"
ShowStatusBar="0"
DefaultFrame="x"
ShowControls="1"
ShowTracker="1"
ShowDisplay="0"
ShowCaptioning="0"
ShowGoToBar="0"
Autostart="1"
AnimationAtStart="0"
TransparentAtStart="0"
PlayCount="1"
Volume="0"
Filename="http://www.example.com/example/example.wmv"
ShowAudioControls="1"
ShowPositionControls="0"
width="424"
height="284">
<br />
</embed>
</object>
</div>
</body>
</html>
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
天啊!
您可以在您的webpage.html 文件中使用以下CSS 来获得完全相同的结果:
请注意,将margin-top 设置为567 像素只会使您的内容在特定的屏幕分辨率下居中。
如果 IE 对 body 标签敏感,您可以使用 div 嵌入 body 的全部内容:
然后使用以下 css:
现在将 body 的所有 css 规则应用到 div#content。
编辑:所以我现在看到了 html 代码。
您应该为您的 div 尝试使用position:relative而不是absolute,看看我提交的最后一个“解决方案”会发生什么。
另外,删除 body css 规则中所有以前的边距设置,并将背景图像移动到 div#content 规则。
...并让我知道:P
Oh my!
You can achieve the exact same result with the following css in your webpage.html file:
Please not that setting the margin-top to 567 pixel will only center your content for a specific screen resolution.
if IE is touchy on the body tag, you can embed the whole content of the body with a div:
Then use the following css:
And now apply all the css rules you had for the body to div#content.
EDIT: So I see the html code now.
You should try position:relative instead of absolute for your divs and see what happens with the last "solution" I submitted.
Also, remove all your previous margin settings in your body css rule and move the background image to the div#content rule.
... and let me know :P
不需要框架集。 下面的代码将在页面中居中放置一个 div。
水平居中是通过将左右边距设置为自动来完成的。 垂直居中是通过将 div 顶部放置在页面下方 50% 处,然后使用 div 高度一半的负上边距将其向上移动到中心来完成的。
您还需要将
html
和body
元素的高度指定为 100%,否则它们只会与内容一样高。div 具有
position:relative
,它还可以解决其中绝对定位元素的问题。 div 成为一个图层,这意味着其中任何绝对定位的元素都将使用 div 的左上角作为零点,而不是页面。div上的边框只是看在哪里。 你可以删除它。
该代码在 Firefox 3、IE 7、IE 8 beta 和 Opera 9 中进行了测试。
编辑:
这是粘贴了内容和样式的代码:
No need for a frameset. The code below will center a div in the page.
The horizontal centering is done by setting the left and right margins to auto. The vertical centering is done by placing the top of the div 50% down the page, then use a negative top margin that is half the height of the div to move it up to the center.
You also need to specify the height of the
html
andbody
elements to 100%, otherwise they will only be as high as the content.The div has
position:relative
which also takes care of your problem with absolutely positioned elements inside it. The div becomes a layer, which means that any absolutely positioned element inside it will use the top left corner of the div as zero point, not the page.The border on the div is only to see where it is. You can remove that.
The code is tested in Firefox 3, IE 7, IE 8 beta and Opera 9.
Edit:
Here is the code with the contents and style pasted in: