如何让div层位于select之上

select元素在ie中是属于一个特例,它和其他的html元素不同,从浏览器层面来解释,它实际上是一个窗体级别的元素(如果有做过c/s开发,应该会知道这点),所以它的优先级大大高于其他所有的html标签,只要有它在的地方,它就会从所有元素的背后冒出个头来,而只有同样窗体级的frame才能遮住它(废话,要是遮不住select,那这个东东不就从frame外冒出来?)

而微软为了解决这个问题,就给iframe(这个东东不是窗体级的哦!)增加了一个属性,让它能够遮住select(不然在一个iframe外诡异地出现一个select……成何体统),因此,iframe在ie中就附有了这个神圣的使命,遮住select,不让它随意地抛头露面。

而且,由于iframe本身并不是窗体级别的元素,所以只要设置z-index,就可以设置iframe在页面中的层次关系,利用这一点就可以很方便来遮住那个不怎么讨喜的select。代码基本上就是我上面写的那个。

完整代码:

<script type="text/javascript">
function initBK(){
var o = document.createElement('iframe');
o.id = 'fram_bk';
document.body.appendChild(o);
}
function popMenu(e){
var o = window.event?event.srcElement:e.target;
var p = getXY(e);
if (document.all){
    if (!$('fram_bk')){initBK();}
    with ($('fram_bk').style){
      display='block';
      top = p.y+"px";
      left = p.x+"px";
    }
}
with ($('menu').style){
    display='block';
    top = p.y+"px";
    left = p.x+"px";
}
}
function getXY(e){
var posx=0,posy=0;
if(e==null) e=window.event;
if(e.pageX || e.pageY){
    posx=e.pageX; posy=e.pageY;
    }
else if(e.clientX || e.clientY){
    if(document.documentElement.scrollTop){
        posx=e.clientX+document.documentElement.scrollLeft;
        posy=e.clientY+document.documentElement.scrollTop;
        }
    else{
        posx=e.clientX+document.body.scrollLeft;
        posy=e.clientY+document.body.scrollTop;
        }
    }
    return {x:posx,y:posy};
}
function $(id){return document.getElementById(id)}
</script>
<style type="text/css">
div#menu{display:none;position:absolute;width:200px;height:300px;z-index:100;background:yellow;}
iframe#fram_bk{border:0;position:absolute;display:none;z-index:0;width:200px;height:300px;}
</style>
</head>
<body>
<button onmouseover="popMenu(event)">探出菜单</button><br />
<div id="menu">这里真的是菜单……别看这里没内容,我真的把它当菜单……这里真的是菜单……别看这里没内容,我真的把它当菜单……这里真的是菜单……别看这里没内容,我真的把它当菜单……</div>
<select><option>这是select哦</option></select>

这些代码都写到<body></body>中。

Trackbacks: 点击获得Trackback地址,Encode: UTF-8  点击获得Trackback地址,Encode: GB2312 or GBK  点击获得Trackback地址,Encode: BIG5
Tags: div | 分类:CSS & JS
浏览概况:评论:0 | 相关文章:2 | 阅读:15378
相关文章
文章评论(0)
发表评论
用户名:
密码(游客无需):
网址/E-mail:
      记住我的信息