热烈祝贺台州朗动科技的站长论坛隆重上线!(2012-05-28)    热烈庆祝伟大的祖国60周年生日 点击进来我们一起为她祝福吧(2009-09-26)    站长论坛禁止发布广告,一经发现立即删除。谢谢各位合作!.(2009-08-08)    热烈祝贺台州网址导航全面升级,全新版本上线!希望各位一如既往地支持台州网址导航的发展.(2009-03-28)    台州站长论坛恭祝各位新年快乐,牛年行大运!(2009-01-24)    台州Link正式更名为台州网址导航,专业做以台州网址为主的网址导航!(2008-05-23)    热烈祝贺台州Link资讯改名为中国站长资讯!希望在以后日子里得到大家的大力支持和帮助!(2008-04-10)    热烈祝贺台州Link论坛改名为台州站长论坛!希望大家继续支持和鼓励!(2008-04-10)    台州站长论坛原[社会琐碎]版块更名为[生活百科]版块!(2007-09-05)    特此通知:新台州站长论坛的数据信息全部升级成功!">特此通知:新台州站长论坛的数据信息全部升级成功!(2007-09-01)    台州站长论坛对未通过验证的会员进行合理的清除,请您谅解(2007-08-30)    台州网址导航|上网导航诚邀世界各地的网站友情链接和友谊联盟,共同引领网站导航、前进!(2007-08-30)    禁止发广告之类的帖,已发现立即删除!(2007-08-30)    希望各位上传与下载有用资源和最新信息(2007-08-30)    热烈祝贺台州站长论坛全面升级成功,全新上线!(2007-08-30)    
便民网址导航,轻松网上冲浪。
台州维博网络专业开发网站门户平台系统
您当前的位置: 首页 » DIV+CSS编程 » IE6.0 DIV层被SELECT遮挡的问题以及解决方案

IE6.0 DIV层被SELECT遮挡的问题以及解决方案

论坛链接
  • IE6.0 DIV层被SELECT遮挡的问题以及解决方案
  • 发布时间:2009-08-13 16:15:25    浏览数:9231    发布者:superadmin    设置字体【   
在IE6.0以及其以下的版本中,会出现这样的一个情况:DIV层里面的东西会被SELECT标签的内容给遮挡,导致DIV层里面的控件不能完全展示,造成很大的问题。就其原因:在IE6.0中给控件进行属性定位的时候,SELECT是输入一个Window的IE组件,而DIV是输入一个用户的组件,在优先级上SELECT是要比DIV要高的,所以在页面呈现的时候SELECT会遮住用户组件DIV,针对这个问题,我们有多种解决方案,而其中最好最简单也是最直接的就是使用IFRAME组件。

IFRAME是IE5.5以后提出来的一个WINDOW组件,在IFRAME中只能嵌套页面,所以IFARAME中有SRC属性可以直接引用一个页面。在IE中有一组规范,IFRAME的优先级要比SELECT高,所以在页面显示的时候,如果IFRAME和SELECT在同一个位置的话,我们会发现,IFRAME把SELECT给遮挡了,而DIV中可以加入IFRAME,有了这个基础我们知道了:将我们要显示的DIV层中加入一个空的IFRAME

<iframe style="position: absolute; z-index: -1; width: 100%; height: 100%; top: 0;left: 0; scrolling: no;" frameborder="0" src="about:blank">


position:absolute是给IFRAME进行定位的。很明显里面给了IFRAME一个z-index:-1,表示在页面上IFRAME的z坐标是-1,SELECT默认的是0.而由于其优先级关系IFRAME会遮挡SELECT,而IFRAME是在DIV中的。所以DIV不会被SELECT给遮挡。再给我们的DIV设置一个Z坐标就OK,Z坐标要比SELECT要高要比IFRAME要高。

例如:

.datePicker {
border: 1px solid WindowText;
background: Window;
width: 170px;

height:150px;

z-index:100;
padding: 0px;
cursor: default;
-moz-user-focus: normal;
}



// create elements
this._el = doc.createElement("div");
this._el.className = "datePicker";

if(window.ActiveXObject){
this._iframe = doc.createElement("<iframe style=\"position: absolute; z-index: -1; width: 100%; height: 100%; top: 0;left: 0; scrolling: no;\" frameborder=\"0\" src=\"about:blank\">");
this._el.appendChild(this._iframe);
}
// header
var div = doc.createElement("div");
div.className = "header";
this._el.appendChild(div);
      在网页中,如果将div,span等标签层叠到Select表单上时,div,span等标签会被Select表单穿过,即使设置了z-index也没用。可以通过以下方法解决。

创建一个没有边框和滚动条的iframe,并将大小及位置设置与要层叠的标签一样,z-index小于要层叠的标签即可。例:

<div style="position:absolute;width:100px;height:100px;top:0;left:0;background-color:#FF0000;z-index:100"></div>
<select></select>
<iframe scrolling="no" frameborder="0" style="position:absolute;z-index:99;width:100px;height:100px;top:0;left:0" id="fy_CP_Frame"></iframe>
      在页面使用多个浮动div的时候(尤其在动态生成的列表中),如果恰好碰上旁边有个select,那是一件很烦恼的事(IE6下比较耀眼的特点,IE7和FF就没有)——浮动div会给select遮盖了。
解决方法很简单
先在页面任意位置放置一个空的隐藏iframe
<iframe id="iFrm" style="position:absolute;z-index:1;display:none;" frameborder="0" />
然后在文件头的js里面,将这个iframe的高度、宽度、OffsetTop、OffsetLeft设置得和div的一样,
这样,iframe就会作为div的底部(当然,div的z-index属性要设置得比iframe要高),而浮动div就不会被select给遮盖了


function showCabinListPanel(obj, Id) {
$(".CabinListPanel").hide();
var clp = $("#" + Id);
var CLP_Offset = document.getElementById(Id);
var e = $(obj);
var Frm = document.getElementById("iFrm");

CLP_Offset.style.top = e.offset().top + e.height();
CLP_Offset.style.left = e.offset().left + e.width() - $(CLP_Offset).width() + 3;
Frm.style.top = CLP_Offset.style.top;
Frm.style.left = CLP_Offset.style.left;
$(Frm).width(clp.width());
$(Frm).height(clp.height() + 2);

clp.css("position", "absolute");
clp.show();
$(Frm).show();

}
娱乐休闲专区A 影视预告B 音乐咖啡C 英语阶梯D 生活百科
网页编程专区E AMPZF HTMLG CSSH JSI ASPJ PHPK JSPL MySQLM AJAX
Linux技术区 N 系统管理O 服务器架设P 网络/硬件Q 编程序开发R 内核/嵌入
管理中心专区S 发布网址T 版主议事U 事务处理