当前位置: 首页 > 图文教程 > 网页制作 > HTML/XHTML教程 > select网页下拉列表与div层遮盖问题

HTML/XHTML教程
XHTML中不再使用HTML中的一些废弃元素
语义化的HTML结构怎么理解
Web 标准学习 理解结构和表现相分离
html5 标签
HTML5 新事件 小结
HTML5 b和i标记将被赋予真正的语义
HTML是网页制作者必须要学习掌握的
HTML DOCTYPE的缩写
Readonly和Disabled的区别
16进制颜色代码(完全)
H标记要在网页制作中合理使用
abbr标记和acronym标记
知名浏览器对DOCTYPE模式的选择机制
用标准dl,dt,dd标签抛弃table列表
html 标签ID可以是变量
iframe 自适应大小实现代码
HTML5 解析规则分析
HTML减肥 精简HTML标记制作网页
HTML5 File API改善网页上传功能
HTML 5 Reset Stylesheet

HTML/XHTML教程 中的 select网页下拉列表与div层遮盖问题


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-11   浏览: 182 ::
收藏到网摘: n/a

   在html中关于select元素的问题在很多地方都提出过,而在前段时间的项目中,刚好遇到了关于select元素的两个小问题,这里进行一下总结。

相关文章:div层被flash层遮盖问题解决思路

    第一就是比较有名的:一般div浮层在IE6下无法遮盖select元素的问题。首先提供了下面一个实例:

select网页下拉列表与div层遮盖问题

    注解:如果你在FirFox下和IE7下看都的结果是一样的:浮层A、B、C都可以正常的现实,即遮住下面的select元素。但是在IE6下则是3种不一样的情况,浮层A依然正常;浮层B主体部分遮盖住了select元素,但是浮层的边框却无法遮住select元素;浮层3则完全无法遮盖select元素。造成这个现象的原因是在IE6下,浏览器将select元素视为窗口级元素,这时div或者其它的普通元素无论z-index设置的多高都是无法遮住select元素的,但是可以通过同为窗口级元素的iframe来遮住select,上面的例子就是这样做的。浮层C仅仅是一个div浮层,这里不多讲,直接看浮层B的结构:

<div class="containDiv" > <iframe class="maskIframe" ></iframe> <div class="mainDiv" >浮层B</div>
</div>

用一个div将实际需要的内容div和一个iframe元素放在一起,它们对应的样式为:

.containDiv{position: absolute; top: 140px; left: 60px; }
.maskIframe{position: absolute; left: -1px; top: -1px; z-index: -1;border:1px solid #000;height:50px;width:50px;_height:48px;_width:48px;}
.mainDiv{background:#EBAC3B;width:50px;height:50px;}

    浮层B运用了iframe在containDiv中绝对定位并设置z-index: -1;,然后让下面真正放内容的mainDiv可以遮盖住iframe,这个时候iframe是可以遮住select元素的,而间接的使得mainDiv也覆盖了select元素。但是浮层B还是不完美,原因就是这里的浮层B的边框使用的iframe边框,iframe本身可以遮盖select,但是它的边框却不能,所以出现了浮层B的情况。

浮层A是解决了这个问题,达到了理想想过,它基本上跟浮层B一样,只是它使iframe比mainDiv上下左右各多出1px,然后再给mainDiv边框,这样浮层的边框是由mainDiv提供的,而整个mainDiv连同边框都在iframe上面,所以达到了理想效果!

    select的第二个问题是在IE下动态生成option选项的问题。看上面第二个问题的例子,当点击(限FF)的链接时在FF下可以给select元素加入3个option选项元素,但是在IE下却不行;当点击(通用)的链接时IE和FF下都可以给select元素加入3个option选项元素。原因是第一个链接是通过select元素的innerHTML属性来加入option元素的

document.getElementById("addSelect").innerHTML = "ABC";

这个在FF下没有问题,但是IE下不能通过这个方法来向select元素加入option子元素,而是需要通过第二个链接提供的方法:

document.getElementById("addSelect").options.add(new Option("A","A",false,true));