2009-05-31 96 views
2

我讨厌默认的选择控件,这是因为它不能在IE中使用CSS进行样式化。 这就是为什么我使用HTML + CSS + JavaScript从头开发了一个新的选择控件。 在过去的两天里,我在CSS和HTML上完成了很好的工作,但今天我发现了一个很难修复的bug。帮助使用html替换

在IE 7中,当我在同一页上有两个控件时,顶部的控件不会覆盖底部的控件。

看到图像:coolrgb点com /文件/选择-help.jpg

下载演示网页(HTML + CSS + JavaScript)的:coolrgb点com /文件/ select-help.zip

请帮助我,这个控制对我来说看起来很好,我想从现在开始在我的所有项目中使用它。这个bug杀死了我的希望和很多时间。

谢谢。

回答

3

如果您给每个控件使用相同的z-index,那么您将无法控制堆叠顺序。

我建议修改你的控件的行为更像一个真正的SELECT元素:一次只能打开一个,或者失去焦点导致它关闭。或者,您可以在控件具有焦点时设置较高的z-index,如果没有焦点,可以设置较低的z-index。

另一件需要注意的事情是:尝试在你的控制下放置一些其他控件,如收音机,复选框和选择。你可能会发现,即使你给了他们一个不同的Z指数,IE也不会停留在那些上面(就像@grawity在他的回答中解释的那样)。这就是为什么您通常会在这些元素顶部显示小部件演示的原因,如下所示:http://jqueryui.com/demos/dialog/

解决此问题的典型方法是使用iframe,但这可能完全值得另外提出一个问题。

3

编辑:重读这个问题后,现在这个答案似乎完全不相关,但我仍然保持在这里。

不是一个真正的答案,但试图解释:

在Internet Explorer中,<select>标签被实现为简单windowed controls,而所有其他元素是窗口控件(这允许它们被称呼)。这就是为什么这些标签始终处于顶端而不遵循z顺序规则的原因。 (下拉菜单部分必须是可修改的,因此它是无窗口控件,所以它显示在主要部分下。)

在Firefox中,所有元素都是无窗口的,在IE8中它们也应该是。

+0

感谢您的解释,这就是为什么我从头开发了一个新的html选择,并且错误在这个新的控件中,而不是默认的控件 – 2009-05-31 19:28:07

+0

好的解释。 – tom 2009-05-31 19:28:24