2012-12-13 77 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. 對於每個列組元素以「寬度」以外「自動」, 增加它跨越列的最小寬度,以便一起 它們至少一樣寬的列組的「寬度」。

這給出了每列的最大和最小寬度。