我需要使用table
來顯示錶格數據,但它將在流體佈局中;我想要填充整個可用寬度,但不能水平擴展超過最大屏幕寬度,以致body
不會獲得水平滾動條。相反,太寬的td
元素應該得到滾動條。如何將表格寬度限制爲包含元素(或屏幕)?
在該例子中存在table
DATA
,所述table
具有border:1px solid black
和從捲曲管道以及(因此white-space:pre
)當輸出應爲容易解析; div
只是普通的CSS佈局助手,如果可能的話,我們也可以擺脫它!
最重要的部分是,它應是沒有固定的像素寬度佈局類型和table
應的情況下數據大於可用寬度小並不需要那麼多空間。總而言之,一張簡單的桌子不會比屏幕寬。理想情況下,table
只會伸展父母元素,直到達到該封閉元素的max-width
,然後不會變寬。
在Chrome
,東西我認爲是一個邪惡的黑客,我一定要堅持的table
在可用的最大寬度,如果需要顯示在td
滾動條。然而,這對於FF來說不起作用,也不是那種可以被認爲是正確的解決方案。
下面的例子可以在https://hydra.geht.net/table-quirx.html發現了一會:
<head>
<title>Obey max-width for table</title>
<style>
.nw { white-space:nowrap }
.quirx div { width:100%; max-width:100%; white-space:pre }
.quirx td { max-width:90px; border:1px solid black }
.quirx td+td { max-width:500px; overflow:auto }
table.quirx { width:100%; max-width:100%; border:1px solid black; border-collapse:collapse }
td { align:left; max-width:100% }
</style>
</head>
<body>
<table summary="" class="quirx"><tr><td colspan="3">
Just some info
</td></tr><tr><td>KEY</td><td><div>DATA (which might contain long lines PRE formatted) XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX </div>
</td></tr></table>
</body>
</html>
注意「合併單元格= 3」是沒有錯誤在這裏,在我的應用程序有時第三列可能會出現,這不能在輸出table
標題時已知。 (一些樣式的事情是多餘的,太。)上述
訣竅在於,該td
的max-width
一起是比通常的畫面(590px
)和table
然後被拉伸到給定width
,這是100%更小的。由於td
不能伸展到屏幕之外,所以div
的overflow
屬性可以按預期工作。然而在FF中,它不能以這種方式工作,既不與width
也不與max-width
(這可能是由於它們的inline
-狀態)。 Chrome
a width:100%
或類似的不適用於td
和tr
元素。請注意,使用max-width
可以得到比width
更令人愉快的表格佈局(我不明白其中的差別)。
除此之外,這隻能在Chrome
,另一個錯誤是,該table
使用即使如果只有小數據以顯示不需要全屏幕寬度的錯誤。
有關的一些注意事項都:
- 我覺得這這裏是一個非常基本的東西,我很困惑,爲什麼它似乎很難用CSS來表達
- 一個目標是要保持它不受任何JavaScript,因此只能用黑客CSS
- 用戶可以從800像素調整窗口的大小,例如以1920px甚至更寬,並且因此
table
的寬度應自動跟隨(沒有JavaScript) - 它應顯示在文本良好基於瀏覽器的瀏覽器如
Lynx
和w3m
,也從curl
- 管道它應在主要4顯示更多或更少的情況下正確地
- 輸出不須容易解析過於混亂(IE,FF,鉻,野生動物園)
- 它不得打破別人(它可以提供錯誤,但內容不能隱藏)
我真的不知道如何存檔。也許這是一個常見問題,但我無法自己發現解決方案。
這很有用。我遇到了問題,桌面佈局似乎在發揮作用。謝謝 – huyz 2011-09-18 14:40:49