1. 程式人生 > >文字框和按鈕對齊

文字框和按鈕對齊

一個文字框旁邊一個按鈕是很經常用到的網頁內容,比如搜尋框等等,而如果旁邊的按鈕使用影象的話,他們豎直方向就很不容易對齊,即使使用vertical-align、padding和margin等都不行(特別是在IE中,Firefox中使用vertical-align還可以)。

例如有如下程式碼:

1 2 3 4
<form> <input type="text" name="foo" value="Test Field"/> <input type="image" src="images/button.gif" /> </form> 

其效果是:

解決方案非常簡單,上述程式碼修改為:

1 2 3 4
<form> <input type="text" name="foo" value="Test Field"/> <input type="image" src="images/button.gif" style="position:absolute" /> </form> 

這時,在Firefox和IE中的效果分別是:

firefox中的效果   ie中的效果

可以看到,在Firefox中,如果事先做好的影象和文字框的高度完全一致,那麼他們就會完全對齊了;而在IE中,則按鈕影象比文字框高一個畫素。

因此可以針對IE瀏覽器稍作調整:

1 2 3 4 5
<form> <input type="text" name="foo" value="Test Field"/> <input type="image" src="images/button.gif" style="position:absolute;+margin-top:1px" /> </form> 

注意,這裡在”margin-top”屬性前面有一個加號,對於Firefox瀏覽器,這個屬性設定就無效了;而對於IE瀏覽器,會忽略掉這個加號,因此針對IE瀏覽器,上面就會存在這1畫素的margin了。在這時,在Firefox和IE中的效果分別是:

firefox中的效果   ie中的效果

到這裡,在豎直方向經對齊得很好了,水平方向上,在Firefox和IE中,還略有區別,在Firefox中二者緊靠在一起,在IE中,二者之間有一點點間隔。但是水平方向的控制就容易多了,這裡就不再細調整了,讀者可以自己試驗一下。

=================快樂的分割線==============

2009年1月12日 補充:

看來網路的好處也在於它可以長久地被人發現,比如這片文章吧,在我貼出了10個多月以後,橘子網友留言給出了一個簡單而優雅得多的方法解決這個問題。

非常好用,方法是對需要對齊的input元素使用 vertical-align 屬性比如:

.nav_r img,.nav_r input,.nav_r select{vertical-align:middle;}

這樣確實對得很齊。

Good!