2011-11-10 30 views
14

以下是我从未想过我会说的内容:我在Firefox和Chrome中遇到了问题,但在IE中工作正常!文本对齐在单元格中的表格中(<table>内部的​​)

这很简单,但我不明白为什么它不工作:

我有一个单元格中的表,我有style="text-align:right"对细胞,但该表是保持留在Firefox和铬(在IE中,它乖乖地向右...)。如果我把align = right放在cell标签中,那么它就可以工作,但我不想这么做。

代码基本上是:

<table width="1000" border="1" cellpadding="0" cellspacing="0"> 
<tr> 
<td style="text-align:right"> 

<table border="1"> 
<tr><td>Hello</td><td>Hello 2</td></tr> 
</table> 

</td> 

<td>Hello 2</td></tr> 
</table> 

我不想嵌套表是宽度= 100%之类的东西......

任何人都可以请向我解释为什么它不”工作,以及如何解决它,也许为什么它在IE浏览器,但不是Firefox或Chrome的作品?

+1

我认为这在FF和Chrome中是正确的。该表不是文本,所以文本对齐不应该影响它。对齐应该适用于任何内容。 – Randy

+0

谢谢 - 那么我将如何使用CSS来对齐单元格中的表格?这是新的吗?几年后我又回到了网站的制作过程中,我从来没有遇到过这个问题? – user1039769

+1

文本对齐会影响内联和内嵌块元素,而不仅仅是文本。 – maxedison

回答

9

我的猜测是,Chrome和FF实际上是正确的渲染它。 text-align可能不应该影响table元素。但是,将float:right应用于表格将执行您所需的操作。

+0

谢谢大家!正是我想要的。 – user1039769

6

我想补充说,对齐表相对于其容器的CSS方式是使用margin属性。

如果您想将其与中心对齐,则必须添加margin: 0 auto;;如果您想将其对齐到右侧,则必须添加margin-left: auto;

正如@maxedison所说,text-align只能与inlineinline-block元素一起使用,所以另一种解决方法是更改​​你的内部表以取得某些显示值。

您还需要记住text-align从“容器到内容”工作,这意味着它通常应用于容器以影响其内容(适用于影响其内联内容的内容,如文本内容) ,并且margin: 0 auto从'内容到容器'工作,这意味着它通常应用于块元素并影响其与其容器相关的位置(应用于div以使其居中)。

+0

操控*'边缘'*属性完美运行,谢谢! – informatik01

1

如果你要修复它(不与完整功能),你可以这样写:

table { 
    display: inline-block; 
} 

这使得你的表能与text-align: center;为中心,如果应用到父元素(一个或多个)。

0

,当你不希望的div浮动做,你可以试试这个: http://jsfiddle.net/NvEZ8/

<div style="text-align:right;"> 
    <table style="display:inline-block"> 
     <tbody> 
     <tr> 
      <td></td> 
      <td>one</td> 
      <td>two</td> 
     </tr> 
     </tbody> 
    </table> 
</div> 

它看起来像文本对齐(用DOCTYPE HTML)只影响inline-block的在Chrome和不内联唯一元素。通过内联代替inline-block,并且它不再适用于我的Chrome

相关问题