【記】IE下input標簽中的padding-left和padding-right


      最近遇到一個問題,那就是input在IE系列中對padding的支持不夠好。如果我們給input定義padding-left和padding-right,希望輸入的文字距離左右邊框有一定的距離,再加上背景圖片,實現一個像bing那樣的輸入框效果。但是,這樣的想法固然好,但是在IE下會不盡如人意。查看bing的搜索框才知道,原來它的的搜索框圖片和輸入文字根本就不是一個input搞定的,而是分開實現的(這個非常常見)。於是我在網絡上開始查找問題的原因,很多人把這個問題歸結於IE的bug,但是,經過學習和嘗試,我個人認為這不應該算是bug,而是在處理和顯示上存在着不同。

     先看一個例子,代碼:

input.input{  
    vertical-align
: middle;  
    height
: 20px;
    background
: #fff url(../images/bg/input_bg.png) repeat-x ;  
    line-height
: 20px;  
    border
: 1px solid #aebad7;
    color
: #333;  
    text-align
: left;
    font-size
:  12px;
    padding
: 1px 24px 0 4px;
    font-family
:  'lucida grande',helvetica,verdana,arial,sans-serif;

}  

     以上代碼是我工作中的一個實際例子,在FF9下和IE下的效果如下:

 左圖的padding-right:24px;生效了,在輸入ABCDEFG后,未顯示的被隱藏了,把下箭頭的圖片的位置空了出來,這是我們希望的。但是在IE全系列下,后面的字母貌似忽視了這個padding-right,大家會把這個歸結於IE的bug,認為它對padding-right不支持。其實,IE是支持padding-right的,只不過,顯示的方式不是我們想想的那樣。經過和同事交流和討論,我認為這個padding-right實際上存在。下面簡單說明下我的看法。

     先看看這個:

input{
    padding
: 0px 80px;

     這個代碼很簡單,就是將左右的邊框內間距設定為80px,在FireFox下,它顯示的如我們想象的那樣:

 

圖中為FrieFox的顯示結果。我們看到左右input中左右兩側的間距已經空出來,這樣,我們可以在input中添加背景圖片,做成如上面的圖中的那個效果。但是,在IE下,它的顯示並不盡如人意。

 

可以看出,padding-right在輸入過多文字后,並沒有使輸入光標與右邊框保持80px的距離。這是為什么呢?原因是IE將padding-right看作是輸入文本距離文本邊界為80px,而不是文本顯示域和邊框間的距離。

 

上圖可以清晰的顯示出原因,當input中輸入文本時,padding-right和padding-left是在文本中體現的,圖中黑色邊界就是文本域,可以看到文本的左右都有間距,這就是padding。紅色的框就是input的邊框,超出紅色邊框的其他內容是被蓋住了,所以,可以看出,在input框來看,文字是到達了input的邊框,隨着文字的輸入,input框(就是紅色的框)會向右側移動,一直到文本域的右邊界。有一點可以證明的就是,當你寫很多內容的時候,用鼠標在input框中全選,當全選到最右側的時候,是能看到這個padding-right的。如下圖

 

相反,FireFox中的padding-right和padding-left是定義在input框上的,相當於在上圖的紅色邊框上添加這個padding而不是黑色的邊框。這就是為什么在FireFox,Chromes等瀏覽器上顯示正常。(FireFox7貌似和IE的一樣。)

 

圖中黑色的框為文本域,紅色的框為input的邊框,藍色的框為padding定以后的顯示域,可以看到,在input框中,無論文本寫了多少,籃框內的文字才會被顯示,因此,input框總會有左右兩個間距,這就是我們預想的效果,也是非IE顯示的結果。 因此,我們要向實現類似的這樣的效果,如果非要實現各瀏覽器兼容,就需要通過div包裹一個input,然后padding的效果由div來負責實現了。

    當然, 這僅僅是我個人通過實踐和網絡上學習得到的結果。僅供參考,如果大家有不同意的看法,也歡迎討論和交流。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM