2009-04-23 52 views
3

我有一行数据头和我想要显示的一行或多行数据。目前,我使用的是HTML表格,但是我遇到过有很多列的情况,表格会在屏幕的末尾出现。或者某些列名称很长(它们通常只是一个以空格为下划线的单词),即使列数不是很多,表格仍然会在浏览器窗口的末尾出现。在HTML中包装表格数据

我想要的是能够显示所有数据,而不必水平滚动。即使这意味着将数据分成多个表格。

我目前使用的是嵌入式Perl,而我用过的一个黑客解决方案是每个表只硬编码8列,并在必要时在第一个下启动一个新表。但理想情况下,我想要的是在一个表上动态地放置尽可能多的列,并在必要时换行到行/表格/任意行。

这可以做HTML/CSS的?或者我需要以某种方式计算每列需要多少宽度,并根据每个表的列数来计算?我不必使用HTML表格,所以如果有更好的解决方案,我更愿意使用它。

+0

你怎么知道有多大太大?如果用户调整浏览器窗口大小?听起来像一个JavaScript问题,而不是一个Perl问题... – Tanktalus 2009-04-23 21:10:40

回答

2

使用table { display: inline; }结合每列一个表应解决您的问题。运行它并在Web浏览器中加载输出。当您调整窗口大小时,不适合的列将会下降。如果您不希望所有表受影响,您可能希望对表使用class

#!/usr/bin/perl 

use strict; 
use warnings; 

print "<html><head><style>table { display: inline }</style></head><body>"; 
for my $col (1 .. 100) { 
    print "<table><tr><th>$col</th></tr>"; 
    for my $row (1 .. 10) { 
     print "<tr><td>$row</td></tr>"; 
    } 
    print "</table>"; 
} 
print "</body></html>"; 
+0

谢谢!我试了一下,发现这个工程非常好。我还有一个问题。有没有办法让任何给定行中的所有表占用整个宽度(浏览器或div)?现在,如果我有多行表格,右侧将全部错开,这取决于该行中单个表格的宽度。这并不是什么大不了的事情,但是将每行中最右边的表格全部垂直对齐会很好。 – accelerate 2009-04-24 00:12:45

1

你可以做的是根据你有多少列设置每列的宽度。最好的解决方案将有一个百分比宽度,所以表格宽度可以随着页面宽度的变化而改变。

0

如果您制作了多个表格,那么我假设您将不得不在页面上垂直滚动以查看所有数据。

另一种解决方案可能是将表格封装在div中,在div上设置宽度,并设置该div的溢出以滚动。这样整个页面不会水平滚动,但包含表格的div将有一个滚动条。