我們知道select標籤在各個瀏覽器中的屬性和各瀏覽器的支持各有些不同,從而造成select選擇框在各瀏覽器的顯示有不同,下面我們通過對主要外形CSS屬性的支持,打造全兼容select。
我對select的height、padding、line-height分別利用控制變量的方法寫了個DEMO在各瀏覽器上測試三種情況:height.100.padding.0、height.no.padding.100、no.height.no.padding,結果如鍊接圖片各瀏覽器DEMO外觀
我們可以得出以下研究屬性。
ie6 | ie7 | ie8 | ie9 | ff | ch | sf | op | |
默認高度 | 22px | 22px | 19px | 20px | 19px | 19px | ||
height | F | T | T | T | T | T | F | T |
padding | F | F | T | T | T | T | F | T |
line-height | F | F | F | F | F | F | T | F |
文字垂直居中 | T | T | T | F | F | T | T | T |
通過上述的研究成果屬性匯總,我們知道IE6是無論如何設置都是固定高度為22px不變的,而其他瀏覽器除safari都是支持height屬性的,那麼我們設置height:22px。那麼現在我們修正一下safari瀏覽器,,我們發現僅有safari支持line-height屬性那麼正好可以利用line-height修正其高度為22px,在font-size為12px的前提下設置line-height:22px,最後FF和IE9裡面的文字不居中,對其設定padding:2px 0,我們發現FF和IE9都居中了,但是各個瀏覽器的select的高度也並沒有增加,那麼這裡有點疑問,在高度設定的情況下,小量數字的padding不增加整體高度?
下面是全兼容代碼示例。
複製代碼