解决div不能覆盖select的问题!
我写了个函数,当鼠标移动到div上,自动隐藏冲突的select,移开后在显示被隐藏的select.在onMouseOver上执行hideConflict(this),... ...
函数如下:作者阿龙,WEB开发网
http://www.webkaifa.com
function hideConflict(divCtl){
arrConflict = new Array();
hideConflictObject("SELECT",divCtl);
hideConflictObject("OBJECT",divCtl);
}
function showConflict(){
for(var i = 0;i < arrConflict.length;i ++){
arrConflict[i].style.visibility = "";
}
}
function hideConflictObject(strTagName,divCtl) {
x = divCtl.offsetLeft;
y = divCtl.offsetTop;
h = divCtl.offsetHeight;
w = divCtl.offsetWidth;
for (var i = 0; i < document.all.tags(strTagName).length; i++)
{
var obj = document.all.tags(strTagName)[i];
if (! obj || ! obj.offsetParent)
continue;
var objLeft = obj.offsetLeft;
var objTop = obj.offsetTop;
var objHeight = obj.offsetHeight;
var objWidth = obj.offsetWidth;
var objParent = obj.offsetParent;
while (objParent.tagName.toUpperCase() != "BODY"){
objLeft += objParent.offsetLeft;
objTop += objParent.offsetTop;
objParent = objParent.offsetParent;
}
var bolHide = true;
if( obj.style.display == "none" || obj.style.visibility == "hidden" || obj.getAttribute("Author") == "tiannet" ){
bolHide = false;
}
if( ( (objLeft + objWidth) > x && (y + h + 20) > objTop && (objTop+objHeight) > y && objLeft < (x+w) ) && bolHide ){
arrConflict[arrConflict.length] = obj;
obj.style.visibility = "hidden";
}
}
}
分享到:
相关推荐
在本案例中,"解决div总是被select遮挡的问题.rar"提供了解决方案,通过引入一个透明的`iframe`来规避这一现象。 首先,我们需要理解Z轴顺序的概念。在CSS中,`z-index`属性用于指定元素在堆叠上下文中的层级。具有...
2. **iframe隔离法**:在Div上层创建一个透明的iframe,设置适当的宽高,覆盖Select所在的位置。由于iframe自身形成一个新的层叠上下文,它可以防止Select覆盖Div。不过这种方法可能会影响页面性能,且在某些情况下...
在互联网的早期,Internet Explorer 6 (简称IE6) 是一款广泛应用的浏览器,但它的兼容性和渲染机制存在诸多问题,其中一个问题就是“select穿透div”的现象。这个问题在现代浏览器中通常不会出现,但在IE6中,`...
总结来说,解决IE6下`div`覆盖`select`框的问题需要理解浏览器的层叠上下文规则,并利用JavaScript动态调整元素的样式。虽然这种问题在现代浏览器中很少出现,但在维护旧项目或考虑跨浏览器兼容性时,理解并掌握这种...
"解决IE6中 Div层挡不住Select组件"这个问题是一个典型的例子,它反映了IE6在CSS层叠样式和Z-index处理上的独特行为。 在现代浏览器中,我们可以利用CSS的`z-index`属性来控制元素的前后堆叠顺序,从而让某些元素...
5. **利用JavaScript进行辅助:** 如果上述CSS方法仍无法解决问题,可以借助JavaScript检测用户对`select`元素的操作,然后动态改变`div`的样式,使其始终位于`select`之上。 6. **测试与优化:** 在多种浏览器环境...
select 在ie6下覆盖div bug 解决方案。 div 模拟select 单选 在 body onload事件中调用init_select方法就可,参数传相关背景图片就可。我都已经放到资源包下了。
### 最顶层div被flash或者下拉列表遮挡的问题解决 在网页设计中,有时会出现顶层的div元素被其他元素如Flash或下拉列表遮挡的情况。这种遮挡问题通常是由于CSS定位属性设置不当造成的,尤其是`z-index`值的设置不...
标题"解决DIV在IE下被下拉列表select穿透的问题(二)"所提及的,是一个典型的IE浏览器特有的问题。这个问题涉及到HTML中的`<div>`元素和`<select>`下拉列表之间的交互,具体表现为在Internet Explorer(特别是旧版本...
由于div无法直接覆盖select,但iframe可以,然后再让div覆盖iframe,这样就可以间接使得div覆盖select。具体实现方法有以下两种: 1. 将iframe元素作为select元素的容器,直接包裹select,如下代码所示: ```html ...
1. 使用jQuery bgiframe插件:该插件创建一个透明的iframe层,将被遮挡的div覆盖在select之上,从而避免遮挡问题。 2. 避免使用绝对或相对定位:改用其他布局方式,如使用浮动(float)或Flexbox(对于现代浏览器)...
/** * 让iframe 显示在 指定的div下面 针对ie6 select挡住div 的bug 采用 iframe来当作div的底 * * @param string divId 需要解决的div层 * @param string iframeId 采用的 IFRAME ,如果不指定 自动...
标题提到的“解决DIV在IE下被下拉列表select穿透的问题(一)”是一个典型的老版IE浏览器渲染问题。在某些情况下,当一个HTML页面中的select元素被点击时,其下拉选项可能会穿透并显示在覆盖在其上方的其他DOM元素(如...
3. **位置计算**:计算`div`容器相对于`select`元素的位置,确保它能正确地覆盖在`select`元素上方。 4. **遍历选项**:遍历`select`元素中的所有选项,为每个选项创建一个`td`元素,并设置相应的属性和事件处理器。...
1. **点击穿透问题**:由于浏览器的默认渲染机制,当一个 `div` 层覆盖在 `select` 元素上时,用户可能仍然能够通过 `div` 层触发 `select` 下拉菜单,这可能导致用户体验不佳。 2. **样式冲突**:`div` 层和 `...
这样,虽然`Div`不能直接覆盖`Select`,但`Iframe`可以。由于`Iframe`在`Div`下方,用户可以通过`Iframe`间接与`Div`进行交互,从而避免了被`Select`遮挡的问题。同时,`Iframe`的透明设置不会影响页面的视觉效果。 ...
在互联网的早期,尤其是IE6浏览器占据主导地位的时代,开发者们常常会遇到一个棘手的问题:在页面上,当一个`div`层位于`select`下拉框之上时,`select`控件会穿透`div`层显示出来,导致设计效果无法正常展现。...
在这种情况下,需要通过JavaScript来动态调整iframe或div的大小和位置以覆盖select元素。 需要注意的是,文章中的一些CSS样式代码存在错误,例如“background-(this.nextSibling.offsetHeight)”应该是“background...