代码之家  ›  专栏  ›  技术社区  ›  d.k

CSS“display:table column”无法正常工作

  •  3
  • d.k  · 技术社区  · 11 年前

    有人能解释这样的问题吗?

    Mozilla Developer Network display: table-column CSS规则描述为: 这些元素的行为类似于 <col> HTML元素 .

    直到现在,我从未广泛使用过CSS表,因为旧版本的IE不支持它们,但今天我发现,即使对于现代浏览器,CSS表也不能被视为HTML表的真正替代品。

    <style>
        .css_table {
             display: table;
             border: 1px solid black;
             padding: 10px;
        }
        .col {
             display: table-column;
             width: 20px;
        }
        .table_row {
             display: table-row;
        }
        input {
            width: 100%;
            display: table-cell;
        }
    
        table {
            border: 1px solid black;
            padding: 10px;
        }
        col {
            width: 20px;
        }
    </style>
    
    <div class="css_table">
        <div class="col"></div>
        <div class="col"></div>
        <div class="col"></div>
        <div class="table_row">
            <input>
            <input>
            <input>
        </div>
        <div class="table_row">
            <input>
            <input style="width:50px;">
            <input>
        </div>
        <div class="table_row">
            <input>
            <input>
            <input>
        </div>
     </div>
    
    <table>
    <col>
    <col>
    <col>
    <tr>
        <td><input></td>
        <td><input></td>
        <td><input></td>
    </tr>
    <tr>
        <td><input></td>
        <td><input style="width:50px;"></td>
        <td><input></td>
    </tr>
    <tr>
        <td><input></td>
        <td><input></td>
        <td><input></td>
    </tr>
    </table>
    

    这是一个 Fiddle 。正如你所看到的,我的意图是创建一个“矩阵”3x3,我想使用表格,以便在某些元素超过单元格宽度时,列会自动调整其宽度。

    但在CSS方法的情况下 table-column 属性未按预期工作。尽管我有三个单元格排成一行,但所有单元格都放在第一列。

    所以问题是:是我做错了什么,还是CSS规则实现有问题? 因为很明显CSS“列”的行为与真正的HTML不同 <col> s

    谢谢

    2 回复  |  直到 11 年前
        1
  •  2
  •   animuson    11 年前

    不能将输入元素指定为表单元格。

    由于display属性由于无效而被忽略,因此表行中没有列可以应用其属性的任何单元格。

        2
  •  1
  •   btevfik    11 年前

    对于html表,您需要具有类似的结构。

    <row>
    <col>
    <col>
    </row>
    
    <row>
    <col>
    <col>
    </row>
    

    http://jsfiddle.net/btevfik/SS3XL/