大家在寫按鈕(input、button)的時候會發(fā)現(xiàn)在 IE 下:
隨著字數(shù)的增多,兩邊的間距也會越來越大。
在 WIN 的XP 風格下,當字數(shù)很多時,兩邊還會出現(xiàn)嚴重的鋸齒。
到底是什么原因呢?
藍色理想 原 WEB標準化專欄 的斑竹 zbm2001z 給出了一個答案:
1、IE 在按鈕的 value 值每增加 4 個字節(jié)(漢字為 2 個)時,就會在按鈕的兩邊產(chǎn)生總共一個字節(jié)的內(nèi)邊距寬度。
2、IE 的按鈕(XP 風格)默認樣式是一個固定尺寸的圓角矩形圖片作背景,所以一旦按鈕變寬變高后,這個固定尺寸的圓角矩形圖片的邊緣自然就會出現(xiàn)“拉毛”的現(xiàn)象了。
對于第二個問題我們暫時沒辦法去解決,除非 WIN 系統(tǒng)自己修復 BUG ,但對于第一個問題 ,我們還是可以修復的。
IE 下給按鈕元素設置 overflow 屬性的 visible 值(注 :padding 值僅在設置了overflow:visible 屬性后才有效),這個屬性其實在上次寫的《background-clip 與 background-origin 的一則運用》一文中已經(jīng)使用。不過在今天閱讀了《The stretched buttons problem in IE》后,發(fā)現(xiàn)原來還有一個小 BUG —— 如果將按鈕置于表格單元格中,雖然按鈕顯示正確了,但是原先預留的寬度大小卻沒有改變,仍然占據(jù)著空間,需要在 IE6 中設置按鈕的寬度(width)為 0(IE7同樣也存在此 BUG,但暫時沒有尋找到好的方式解決)。
最終的修復代碼如下(Demo):
input.button { padding: 0 .25em; width: auto; _width: 0; overflow:visible !ie;}