Asp.net ModalPopupXtender不';在IE6框架布局上不工作
我使用的“框架”布局与中的类似:一个div#top位于页面顶部,一个div#left位于左侧,一个div#main包含主要内容。#top和#left div包含导航菜单 现在,我想在content(#main)div中使用AjaxControlToolkit ModalPopupXtender来使用一个弹出div 这在IE8上很好用(其中#top、#left、#main都有position:fixed),但是当我在IE6上运行它时,模式背景只覆盖#main div-我需要它覆盖整个页面,包括#top和#left导航div 查看ModalPopupXtender的脚本,它似乎在向上搜索父级层次结构,直到找到位置为相对或绝对的父级。在IE6渲染中,#main div有position:absolute,因为position:fixed不受支持,我想这可以解释发生了什么Asp.net ModalPopupXtender不';在IE6框架布局上不工作,asp.net,css,ajaxcontroltoolkit,modalpopupextender,Asp.net,Css,Ajaxcontroltoolkit,Modalpopupextender,我使用的“框架”布局与中的类似:一个div#top位于页面顶部,一个div#left位于左侧,一个div#main包含主要内容。#top和#left div包含导航菜单 现在,我想在content(#main)div中使用AjaxControlToolkit ModalPopupXtender来使用一个弹出div 这在IE8上很好用(其中#top、#left、#main都有position:fixed),但是当我在IE6上运行它时,模式背景只覆盖#main div-我需要它覆盖整个页面,包括#t
对于在IE6上使其正常工作的最佳/最简单方法,有什么建议吗?理想情况下,无需修改ModalPopupXtender代码,但如果有必要,我会这样做,这是最好的解决方案。我在中实现了解决方案的一个变体,它似乎解决了问题:
- 对于IE6,有条件地将#main div position:static设置为左侧边距等于 #左分区的宽度。不幸的是,边缘顶部在IE6中似乎不起作用,所以
- 对于IE6,在主div之前有条件地添加一个id为IE6的空div
- 将ie6隔套div的高度设置为与顶部div相同的高度
<!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>
<title>'Frames' using <div>s</title>
<style type="text/css">
* {
margin: 0;
padding: 0;
}
html, body {
height: 100%;
overflow: hidden;
}
#top, #left, #main {
position: fixed;
overflow: hidden;
}
#top {
top: 0;
width: 100%;
background-color: #ddd;
height: 100px;
}
#left {
left: 0;
top: 100px; /* move everything below #top */
bottom: 0;
background-color: #bbb;
width: 120px;
}
#main {
top: 100px;
left: 120px;
bottom: 0;
right: 0;
overflow: auto;
}
</style>
<!--[if IE 6]>
<style>
#top, #left {
position: absolute;
}
#ie6-spacer {
height:100px;
}
#left {
height: expression((m=document.documentElement.clientHeight-100)+'px');
}
#main {
margin-left:120px;
height: expression((m=document.documentElement.clientHeight-100)+'px');
width: expression((m=document.documentElement.clientWidth-120)+'px');
}
</style>
<![endif]-->
</head>
<body>
<div id="top">Title<br /></div>
<div id="left">LeftNav<br /></div>
<!--[if IE 6]>
<div id="ie6-spacer"></div>
<![endif]-->
<div id="main">
<p>
Lorem ipsum ...<br />
<!-- just copy above line many times -->
</p>
</div>
</body>
</html>
使用div的“Frames”
* {
保证金:0;
填充:0;
}
html,正文{
身高:100%;
溢出:隐藏;
}
#上、左、主{
位置:固定;
溢出:隐藏;
}
#顶{
排名:0;
宽度:100%;
背景色:#ddd;
高度:100px;
}
#左{
左:0;
顶部:100px;/*将所有内容移动到顶部下方*/
底部:0;
背景色:#bbb;
宽度:120px;
}
#主要{
顶部:100px;
左:120px;
底部:0;
右:0;
溢出:自动;
}
标题
左导航
Lorem ipsum…
很高兴你找到了这个解决方案,但我认为这不是一个好办法。我也使用了这类弹出窗口,并将一个模态对话框div与#top
、#left
和#main
(等等)分开,具有100%的宽度和高度以及一个大的z索引,显示时覆盖了所有内容(有点透明)。在上面我放置了包含对话框面板的div。但不管怎样,它对你有效,所以谁在乎…@Marcel,谢谢你的评论,我当然愿意接受更好的解决方案。我的问题是,我使用的是ASP.NET WebForms和AjaxControlToolkit,因此对div的放置没有太多的控制。目前,我有一个基本布局的母版页(上/左/主div和导航),还有一个嵌套的母版页,用于使用弹出窗口的页面,其中包含一个主要内容的占位符ModalPopupXtender,以及弹出内容的占位符。因此,嵌套的母版页内容位于主分区内。应用程序开发人员只需专注于提供主内容和弹出内容。嗨,乔,我已经认为你有这样的限制。由于我对ASP.NET一无所知,所以我无法就如何使用WebForms和AjaxControlToolkit向您提供建议。但我已经说过:如果它没有坏,就不要修理它@马塞尔,再次谢谢你。我将遵循这个建议,特别是因为IE6只是用于传统支持,希望不久就会消失。