【问题标题】:Table with dynamic columns but layout fixed具有动态列但布局固定的表
【发布时间】:2012-06-05 17:12:14
【问题描述】:

如果页面可以包含任意数量的列,动态创建,我想要一个 100% 的表。每列可以包含很长的单词,长到它们都可能不适合一页。为了解决这个问题,我使用了table-layout: fixed,它使表格的所有列在页面上可见。问题是我仍然希望每列的宽度是动态的,这样如果一列有短词,它应该比长词短。

例如:jsfiddle

表 1 始终显示所有列,但是当页面足够宽时,即使其他列中有可用空间,它也会破坏单词。

当页面比列宽时,表 2 可以正常工作,但当窗口较小时,第一列会将其他列推出屏幕/推到其他对象上。

有没有办法全部搞定?一个总是包含所有列和不超过它们必须适合的列的表?我希望它在必要时打破文字而不是溢出桌子。

我可以接受 js/jquery 解决方案,但如果可以使用 css 则更可取。

编辑:

小桌子: 注意:asasdasdasdasdasdasdasdasdasdasdasdasd 是一个被缩短的单词,因为表格不能比这个大。

+--------------------+----------+---------+
|asasdasdasdasdasdasd|qweqweqweq|zxczxczxc|
|asdasdasdasdasd     |          |         |
+--------------------+----------+---------+

大桌子: 注意:所有列的大小不相等,最好是随着空格均匀分布而增加。

+--------------------------------------+-------------+------------+
|asasdasdasdasdasdasdasdasdasdasdasd   |qweqweqweq   |zxczxczxc   |
+--------------------------------------+-------------+------------+

【问题讨论】:

  • 我的理解是,当单元格中有大量数据并且数据很短时,它应该适合没有空格?
  • @MSUH 我编辑了我的帖子以尝试澄清。如果太长的话,我什至想要换行。如果还有空间,最好将其均匀地分布在桌子上。

标签: javascript jquery html css


【解决方案1】:

首先移除“table-layout:fixed”属性

试试下面的代码,这在你的情况下应该可以完美运行:

$(document).ready(function(){

 $("table").find('tr').children('td').each(function () {
     var wdth = $(this).html().length + 10;
     $(this).css({ 'padding-right': '10px' }, { 'width': wdth + 'px' });
  });
});     

【讨论】:

    【解决方案2】:

    如果我理解这可能是一个起点:

    var tds;
    
    $("table").each(function() {
    
       tds = $("td");
    
        for(var x = 0; x < tds.length; x++){
            tds.eq(x).css('max-width', '100px');
        }
    
    });
    

    【讨论】:

    • 这个解决方案的问题是你将宽度设置为像素值,我不知道会有多少列以及它们应该有多宽。表格宽度可能有 20 列,表格宽度为 768px,表格宽度可能有两列,表格宽度为 1080px……而这个 JS 可以很容易地用 CSS 完成:table#t2 td { max-width: 300px; } :)
    • 能不能算出表格的列数和屏幕或文档的宽度,用这个比例代替max-width: 100px?这可能是一个解决方案?
    • 我不确定这是否可行。考虑这个场景:我有 10 列和 1000px 的宽度。前 9 列每列只需要 10px,第 10 列可以轻松使用 910px。最大宽度应该是多少?它们也可能是每个的 1/10。所以最大宽度应该是 910px 或者 100px?
    • 无论如何我都没有太多时间尝试刻薄的东西JsFiddle
    • 谢谢,这是一个好的开始。一个问题仍然是短的“asd”字被分成三行,而长的行每行有超过 30 个字符。我希望简短的单词尽可能长。可以将其视为具有 layout:fixed 但短列中的空格转移到较长列中。
    猜你喜欢
    • 2017-07-09
    • 2012-05-01
    • 1970-01-01
    • 2017-01-23
    • 1970-01-01
    • 2017-09-21
    • 1970-01-01
    • 1970-01-01
    • 2011-10-15
    相关资源
    最近更新 更多