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

HTML/XHTML教程
如何以及何时使用sIFR
提交表单后转到另一个文件
表格标签(table)深入了解
容易混淆使用位置的XHTML标签
类型File的Input按钮功能研究
注册表单设计的规则
W3C建议的移动Web标记语言XHTML Basic 1.1
超级链接a的提示方式和打开方式
超级链接a的表现形式和打开方式
xhtml css网页制作问题的解决方法
网页注释在IE中产生文字溢出
HTML教程:有序列表
HTML教程:无序列表
HTML网页制作的强大8条技巧
blockquote标记应用注意
X/HTML5 和 XHTML2
以HTML网页实例说明head区代码的意思
XHTML标记要合理使用
DOCTYPE类型详细介绍
表单Form的submit事件不响应

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-11   浏览: 158 ::
收藏到网摘: 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));