2010-06-30 138 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