【问题标题】:Force table cell to get the biggest height from the other cells in a row强制表格单元格从一行中的其他单元格中获取最大高度
【发布时间】:2014-10-29 08:21:22
【问题描述】:

这是我的 HTML:

<table>
    <tbody>
        <tr>
            <td><textarea name="" id="" cols="30" rows="10"></textarea></td>
            <td><textarea name="" id="" cols="30" rows="10"></textarea></td>
        </tr>
    </tbody>
</table>

问题在这个fiddle 中可见。

基本上,当我在一列中调整 textarea 的大小时,我希望另一个 textarea 具有与另一列相同的高度(基本上是强制单元格增加高度)。

我想知道是否有适用于此的纯 CSS 方法。

【问题讨论】:

    标签: html css textarea html-table


    【解决方案1】:

    min-height: 100%; 添加到textarea 应该使其行为符合您的要求。

    table{
        border-collapse: collapse;
    }
    td{
        border: 3px dashed red;
        padding: 15px;
    }
    
    textarea{
        resize: vertical;
        min-height: 100%;
    }
    <table>
        <tbody>
            <tr>
                <td><textarea name="" id="" cols="30" rows="10"></textarea></td>
                <td><textarea name="" id="" cols="30" rows="10"></textarea></td>
            </tr>
        </tbody>
    </table>

    编辑: 鉴于上述解决方案的问题,我想出了另一种处理方法,以确保 a) 它可以在 Firefox(以及 Chrome)和 b) 中运行允许多次调整大小。此解决方案确实进行了一些重大更改:

    • 处理调整大小的table 周围有一个额外的div
    • textareas 不再调整大小

    这背后的原因是调整一个元素的大小会在它上面设置一个height,所以如果你调整一个textarea 的大小,包含的单元格会增长以适应它;如果您然后尝试缩小另一个 textarea 它不起作用,因为单元格已经长大以适应较大的 textareaheight

    div {
        float: left;
        overflow: auto;
        position: relative;
        resize: vertical;
    }
    table {
        border-collapse: collapse;
        height: 100%;
    }
    td {
        border: 3px dashed red;
        height: 100%;
        padding: 15px;
    }
    textarea {
        height: 100%;
        resize: none;
    }
    <div>
        <table>
            <tbody>
                <tr>
                    <td><textarea name="" id="" cols="30" rows="10"></textarea></td>
                    <td><textarea name="" id="" cols="30" rows="10"></textarea></td>
                </tr>
            </tbody>
        </table>
    </div>

    JS 小提琴: http://jsfiddle.net/m7t5cqk8/

    【讨论】:

    • 不幸的是,我刚刚意识到这似乎只适用于 Chrome 而不是 Firefox。
    • 这种方法存在一个问题,我将其突出显示为对以前用户的评论,该用户以类似的方式做出了回应(我想他删除了他的帖子)。基本上,如果您选择增加 textareas 的大小,然后您选择减小它们(以随机方式,最好与您增加它们的顺序相反),它们将不再调整大小
    • @Zubzob 很有趣,没有注意到这一点,但我想这是有道理的,因为每次你把盒子变大时,min-height 都会有效地增加。回到绘图板我猜!
    • @Zubzob 请查看我的更新答案。我不知道这是否合适,因为调整大小功能已从 textareas 中移除,而是移至包装器 div
    • 嗯,很有趣。虽然我更喜欢每个文本区域都有一个调整大小,但这可能是一个很好的解决方法。由于我认为仅通过 CSS 不可能完成我在最初问题中想要做的事情,所以我只会将您的解决方案标记为答案。谢谢:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-06
    • 2012-10-24
    • 2012-08-29
    • 1970-01-01
    • 1970-01-01
    • 2012-04-09
    • 2018-05-06
    相关资源
    最近更新 更多