2009-05-31 91 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