有幾個原因促使我們使用自定義的select控件來代替原生的select控件:
- 在ie6下select是一個窗口級的元素,絕對定位的層會被select穿越(一般的解決方法是在層內(nèi)加一個iframe來遮住select)。
- 如果是自定義的select控件可以有更多的功能,下拉列表下的列表項可以更豐富,可以是列表、樹甚至是表格(如下圖)。
先把用HTML+CSS把select控件的外觀模擬出來:
這兒用到一張圖片arrow.gif
運行代碼框
[Ctrl+A 全部選擇 提示:你可先修改部分代碼,再按運行]
OK,在ff3下測試通過,在ie6、ie7下有一些錯位,需要加CSS hack來作小許的調(diào)整,為了代碼的純粹,在這就不展示了。
接下來試著用js實現(xiàn)基本功能:
通過JS替換頁面內(nèi)原有的select,當(dāng)時我們希望這個JS是非侵入式的,只要引用了select.js這個js文件的頁面,就自動把頁面里原有的select控件替換接管了。
先初步地實現(xiàn)selct控件的替換,和基本的交互(暫不考慮接管select的onchange事件等問題)。在下面的實現(xiàn)方法里并沒有把原有的select去掉,只是隱藏了起來,所以如果select是在表單內(nèi),表單仍然能夠正常提交。
運行代碼框
[Ctrl+A 全部選擇 提示:你可先修改部分代碼,再按運行]
OK,在ff3下測試通過,在ie下存在層的定位問題,當(dāng)彈出下拉列表時需要對層的z-index作調(diào)整,在這就不展示了。
如果這個select控件僅在前臺作小量的應(yīng)用,那么適當(dāng)?shù)靥砑右恍⿲︽I盤,鼠標(biāo)的響應(yīng),就差不多可以了。
出處:藍(lán)色理想
責(zé)任編輯:bluehearts
上一頁 下一頁 分享我們的select控件設(shè)計過程 [2]
◎進(jìn)入論壇網(wǎng)頁制作、WEB標(biāo)準(zhǔn)化版塊參加討論,我還想發(fā)表評論。
|