2010-06-30 163 views
3

假設您有兩個相鄰的簡單表格單元格。
一個包含一個單選按鈕和文本。另一個只包含文本。HTML - 對齊單選按鈕和文本

單選按鈕的大小設置爲16x16像素(不要問我爲什麼,假設它就是這樣)。
字體大小爲12像素。

如何使標籤和單選按鈕在所有主流瀏覽器中沿着(或相當接近)排列的垂直中間一致排列?

樣本HTML,讓你開始:

<style type="text/css"> 
td { 
    font-size: 12px; 
    font-family: Verdana; 
} 

.radio { 
    width: 16px; 
    height: 16px; 
    vertical-align: middle; 
    margin: 0px; 
} 

.blah { 
    text-decoration: line-through; 
} 
</style> 

<table> 
    <tr> 
    <td> 
     <input type="radio" class="radio" /> 
     <span class="blah">O</span> 
    </td> 
    <td> 
     <span class="blah">O</span> 
    </td> 
    </tr> 
</table> 

在我安裝了IE,歌劇,火狐和Chrome的版本,上面呈現類似this

我期待看到的結果是一個在IE上顯示的圖像?真的嗎?

其餘的看起來足夠接近,但是我爲排列文本所做的任何嘗試使得它在4個瀏覽器中的至少2箇中總是看起來很糟糕。要做到這一點

+1

附註:你爲什麼用這個表?這是90年代;)使用浮動divs代替! – 2010-06-30 20:25:12

回答

2

谷歌搜索 「垂直對齊:中間」 的Gavin基斯特納,這是有用的發現this short explanation。我嘗試了該頁面上的最終建議,該建議似乎在Chrome,IE,Firefox,Opera和Safari中得到了推崇。

我所做的是添加td{ line-height:1.5em } - 請參閱鏈接的解釋。

+0

這樣做的確有用。謝謝! – mjomble 2010-07-01 07:32:39

0

的一個方法是爲嵌套表添加到你的第一個兩個格,並把在兩個小區的單選按鈕,第一區間(嵌套表內)

<table> 
    <tr> 
    <td> 
     <table><tr><td><input type="radio" class="radio" /></td> 
     <td><span class="blah">O</span></td></tr></table> 
    </td> 
    <td> 
     <span class="blah">O</span> 
    </td> 
    </tr> 
</table> 
+0

因爲表格是作爲設計工具發明的。 ;) – 2010-06-30 20:23:37

+0

沒有開玩笑,但他已經在使用表,所以誰在乎? – alex 2010-06-30 23:30:10

+0

由於我需要將內容排列到實際網格中,因此外表實際上是相當合理的(在我從中導出該示例的原始問題中)。 所以我仍然希望遠離這些內部的「黑客表」:) 但無論如何,我已經得到了解決問題的答案。 – mjomble 2010-07-01 07:38:08

0

快速射擊在黑暗中:

  • 給無線電輸入元件它自己的表格單元格?那麼至少文本應該互相排列。
  • vertical-align:middle;改爲td而不是.radio?仍可能導致問題,因爲與無線輸入元素單元格中的文本的基線仍可以通過輸入元素來決定...
1
<td> 
    <input type="radio" class="radio" /> 
</td> 
<td> 
    <span class="blah">O</span> <!-- text --> 
</td> 
<td> 
    <span class="blah">O</span> <!-- text2 --> 
</td> 

你爲什麼不把文字在其自己的柱。

+0

,直到他想引入填充,此時第一個跨度將顯示爲它自己的元素,而不是與單選按鈕 – alex 2010-06-30 20:14:31

+0

關聯給它一個類,而不是與填充:0; – galambalazs 2010-06-30 20:21:56

2

一個快速解決方法是使無線電的td和width:16px;height:16px;font-size:12px;相等。

2的例子:

td { 
    font-size: 12px; 
} 
input[type=radio] { 
    width: 12px; /* resize radio */ 
    height: 12px; 
} 

td { 
    font-size: 16px; /* resize font-size */ 
} 
input[type=radio] { 
    width: 16px; 
    height: 16px; 
} 
+0

@Gert G:有趣的是,猜moz css渲染不同於webkit。回到修補。 – tcooc 2010-06-30 20:40:10

+0

這個技巧在FF和Chrome中非常適合我......還沒有在IE中測試過(我沒有使用表格)......謝謝! – jason 2011-05-30 07:06:12

+0

這在高DPI屏幕上看起來不會很漂亮:/ – 2012-10-16 15:38:18