2012-12-13 51 views
1

我有一个td与内联样式设置其width百分比。我可以修改CSS而不是HTML。将td的宽度设置为auto?

我怎样才能让td仅占其内容所需的宽度是多少?

下面的CSS不起作用:

td#my 
{ 
    width: auto !important; 
} 
+2

你可以做一个jsFiddle的例子吗? – Ladineko

+0

也许可以查看http://www.w3.org/TR/CSS21/tables.html#width-layout获取关于如何计算表格宽度的详细说明,以及设置此类填充的不同方法。 –

+0

你能给我们更多的背景吗?表格'html'结构至少? –

回答

1

默认情况下,表格单元格为自动宽度,但它们占用列中最宽单元格的最小宽度。因此,以此为例

td1|td2|td3| 

1 |2 |3 | 

这些单元格将基于第一行的宽度都相同。没有办法,我能想到的,迫使它这样做:

td1|td2|td3| 

1|2|3| 

这是什么,它听起来就像你正在试图做的,不是没有反正改变HTML。

-1

尝试:

td#my {width:inherit !important;}

td#my {width:0% !important;}

+1

'td#my'和'td#my''' –

+0

有区别对不起,我的错误 – Hahn86

1

你需要尊重的CSS规则的特殊性。 (这样做可避免使用!重要)

http://coding.smashingmagazine.com/2007/07/27/css-specificity-things-you-should-know/

内嵌样式在1000权衡在ID是100和元素1.所以要保证正确使用你的CSS规则,你将需要密切注意这一点。上面链接的文章在解释特异性方面做得比我希望达到的要好得多。阅读它,研究它,喜欢它。

如果这并不直接回答你的问题:它是一个内容丰富的文章,实际上可能通过允许您采取不同的途径解决问题。

+0

除非内联样式也有'!important',这不是OP所具有的问题。 –

+0

@ZachL我提到这并不能解决他的直接问题,但是它值得阅读,如果应用得当,他可以避免使用'!important'并且仍然具有所需的效果。 – rlemon

0

您可能需要做出一些改变的CSS为表的其他细胞。挖入以下看电池的宽度是如何计算

来自:w3.org/TR/CSS21/tables.html#width-layout

列宽被确定如下:

  1. 计算每个单元格的最小内容宽度(MCW):格式化的 内容可以跨越任意数量的行,但可能不会溢出单元格 框。如果单元的指定“宽度”(W)大于MCW,则W 是最小单元宽度。 'auto'的值意味着MCW是最小单元格宽度。 块引用

    另外,计算每个小区的“最大”小区宽度:格式化 内容而不断裂比,其中显式换行符 发生其它线路。

  2. 对于每列,请确定仅跨越该列的 单元的最大和最小列宽。最小值是具有最大最小单元格宽度的 单元所需的最小值(或列'宽度', ,取较大者)。单元格所需的最大值为 最大单元格宽度(或列'宽度',取大者为 )。

  3. 对于跨越多个列的每个单元格,增加它跨越的列的最小宽度,以使它们一起至少与单元格一样宽度为 。对最大宽度做同样的操作。如有可能, 将所有跨列扩大大约相同的数量。

  4. 对于每个列组元素以“宽度”以外“自动”, 增加它跨越列的最小宽度,以便一起 它们至少一样宽的列组的“宽度”。

这给出了每列的最大和最小宽度。