使用 IE 时,不能将绝对定位的 div 放在选择输入元素上。这是因为 select 元素被认为是一个 ActiveX 对象,并且位于页面中每个 HTML 元素的顶部。
我已经看到人们在打开弹出 div 时隐藏了选择,这会导致控件消失的非常糟糕的用户体验。
FogBugz 实际上有一个非常聪明的解决方案(在 v6 之前),可以在显示弹出窗口时将每个选择变成文本框。这解决了错误并欺骗了用户的眼睛,但行为并不完美。
另一个解决方案是在 FogBugz 6 中,他们不再使用选择元素并在任何地方重新编码。
我目前使用的最后一个解决方案是弄乱 IE 渲染引擎,并强制它也将绝对定位的元素渲染<div>
为 ActiveX 元素,以确保它可以存在于选择元素之上。这是通过在<iframe>
内部放置一个不可见的<div>
并使用以下样式来实现的:
#MyDiv iframe
{
position: absolute;
z-index: -1;
filter: mask();
border: 0;
margin: 0;
padding: 0;
top: 0;
left: 0;
width: 9999px;
height: 9999px;
overflow: hidden;
}
有没有人有比这个更好的解决方案?
编辑:这个问题的目的是提供更多信息,因为它是一个真正的问题。我发现这个<iframe>
技巧是一个很好的解决方案,但我仍在寻找改进,比如删除这个会降低可访问性的丑陋无用标签。