【问题标题】:Make table content fit to width with table width: 100% set in css使表格内容适合宽度,表格宽度:100% 在 css 中设置
【发布时间】:2015-03-27 07:12:15
【问题描述】:

示例表

<table>
    <tr>
        <td>Age</td>
        <td>12</td>
        <td>Gender</td>
        <td>Male</td>
        <td>Some long label</td>
        <td>Some long label value</td>
        ...
        ...
        could be more...
    </tr>
</table>

如果没有宽度:100% 的内容应该适合每个列容器,但我想让表格扩展到整个页面。设置表格宽度:100% 平均分配列。我想让每个标签(标签:年龄,性别,一些长标签)适合它的列容器,其余的在它们之间平均分配(值:12,男性,一些长标签值)。

我知道设置 &lt;td width="5%"&gt;Age&lt;/td&gt; 或在 css 中设置应该可以完成这项工作,但我认为这会适得其反,特别是如果您必须对很多列进行此操作。

有没有办法在 css 中使用较少的代码、javascript 或 jquery 来实现这一点?关于如何做到这一点的任何提示或方向?

注意:

我已阅读 this,但我想避免在 html 中注入 width="%"。

【问题讨论】:

    标签: javascript jquery html css


    【解决方案1】:

    可能是colgroup 可以帮助你。试试this

    HTML 是:

    <table border = "1" cellspacing = "0" cellpadding = "0">
      <colgroup>
        <col>
        <col style="width:40%">
        <col>
        <col style="width:40%">
      </colgroup>
        <tr>
            <td>Age</td>
            <td>12</td>
            <td>Gender</td>
            <td>Male</td>
        </tr>
    </table>
    

    【讨论】:

    • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接的答案可能会失效
    • 你可以使用不同的 `col' 元素的宽度。 Example.
    • 在你的答案中写下这些 cmets 以改进它。
    • 这很接近,但它没有平均分配标签值。
    【解决方案2】:

    如果我理解正确,这就是您要查找的内容:

    table { width: 100% }
    td:nth-child(odd) { width: 5% }
    

    或者如果您希望内容被单元“拥抱”:

    table { width: 100% }
    td:nth-child(odd) { width: 1%; white-space: nowrap }
    
    
    $(function(){
            $(window).load(function() {
                updateCellWidth()
            })
            $(window).resize(function() {
                updateCellWidth()
            })
    })
    
    function updateCellWidth() {
        var width = 0, cols = 0
        $("table td:nth-child(even)").each(function(){
            ++cols
            width += $(this).width()
        })
    
        if (cols > 0) {
            var evenCellWidth=($("table").width()-width)/cols
            $("table td:nth-child(even)").css("width", evenCellWidth + "px")
        }
    }
    

    【讨论】:

    • PS:你必须调整框架的大小才能让它在小提琴上工作
    【解决方案3】:

    你在寻找类似this.的东西吗?

    那么border-collapsecellspacingcellpadding 可能会对你有所帮助。

    【讨论】:

    • 不,我希望它(表格)在整个页面中展开。
    【解决方案4】:

    这就是我想出的。感谢您的想法。

    <style type="text/css">
        table {
            border-collapse: collapse;
            width: 100%;
        }
    
        table td {
            border: 1px solid #000;
            white-space: nowrap;
        }
    </style>
    <body>
        <table id="tbl1">
            <tr>
                <td>Age</td>
                <td>12</td>
                <td>Gender</td>
                <td>Male</td>
                <td>Some Long Label</td>
                <td>Some Long Label Value</td>
            </tr>
        </table>
        <script type="text/javascript">
            var tbl = document.getElementById('tbl1');
            var rowCount = tbl.rows.length;
            var colCount = tbl.rows[0].cells.length;
    
            for (var i = 0 ; i < colCount; i++) {
                if (i%2 == 0) {
    
                    tbl.rows[0].cells[i].style.width = tbl.rows[0].cells[i].innerHTML.length + 'px';
    
                }
            }
        </script>
    

    【讨论】:

      猜你喜欢
      • 2019-07-22
      • 1970-01-01
      • 1970-01-01
      • 2013-10-03
      • 2012-07-01
      • 2016-04-06
      • 1970-01-01
      • 2011-05-13
      • 2023-04-03
      相关资源
      最近更新 更多