gpt4 book ai didi

表格单元格内的 HTML 输入

转载 作者:行者123 更新时间:2023-12-04 15:24:34 29 4
gpt4 key购买 nike

我有一个包含许多列的表,我想添加 input标题单元格内的字段,但我希望输入适合根据正文内容的宽度。
这是没有 input 的样子领域:
enter image description here
这就是 input 的样子领域:
可以看出,像“index”和“Is Active”这样的列占用了太多空间,我想尽可能地保持第一个布局。我尝试将输入宽度设置为 100% 和自动,但它似乎没有多大帮助。
当前的 css 看起来像:

.table {
font-family: Arial, Helvetica, sans-serif;
}

.table thead {
position: sticky;
top: 0;
}

.table thead th {
border: 1px solid #e4eff8;
background: white;
cursor: pointer;
}

.table thead th.header-label {
cursor: pointer;
background: linear-gradient(0deg, #e4eff8, #4578a2 5%, #e4eff8 150%);
color: white;
border: 1px solid white;
}

.table th,
.table td {
padding: 0.2rem 0.5rem;
text-align: center;
}

.table td {
border: 1px solid #e4eff8;
}

.table input {
width: 100%;
}
<table class="table">
<thead>
<tr>
<th class="header-label">Index</th>
<th class="header-label">Name</th>
<th class="header-label">Phone</th>
<th class="header-label">Company</th>
<th class="header-label">Registered</th>
<th class="header-label">Is Active</th>
</tr>
<tr>
<th><input type="number"></th>
<th><input type="string"></th>
<th><input type="string"></th>
<th><input type="string"></th>
<th><input type="date"></th>
<th><input type="boolean"></th>
</tr>
</thead>
<tbody>
<tr>
<td>0</td>
<td>Paige Bean</td>
<td>+1 (871) 458-2959</td>
<td>MOREGANIC</td>
<td>2018-12-27T11:28:50 -01:00</td>
<td>false</td>
</tr>
<tr>
<td>1</td>
<td>Knox Holman</td>
<td>+1 (880) 497-2808</td>
<td>MAINELAND</td>
<td>2017-05-07T02:54:22 -01:00</td>
<td>false</td>
</tr>
<tr>
<td>2</td>
<td>Brandy Colon</td>
<td>+1 (969) 513-2827</td>
<td>NEXGENE</td>
<td>2017-06-07T06:42:31 -00:00</td>
<td>true</td>
</tr>
<tr>
<td>3</td>
<td>Suzette Austin</td>
<td>+1 (863) 445-3604</td>
<td>JETSILK</td>
<td>2015-10-24T11:10:41 -01:00</td>
<td>true</td>
</tr>
<tr>
<td>4</td>
<td>Downs Cain</td>
<td>+1 (822) 574-2617</td>
<td>INSECTUS</td>
<td>2017-10-19T08:18:09 -01:00</td>
<td>true</td>
</tr>
<tr>
<td>5</td>
<td>Michael Yang</td>
<td>+1 (875) 492-3905</td>
<td>DELPHIDE</td>
<td>2016-08-15T01:31:55 -01:00</td>
<td>false</td>
</tr>
</tbody>
</table>

那么如何使用纯 css 实现这一点,而不需要对每列的宽度进行硬编码?
enter image description here

最佳答案

由于无法预测输入上的文本,因此每个宽度为 100% 的输入都试图获得最大的宽度。 解决方案 是使用包装divabsolute positioning .
这就是它的工作原理(对我来说很明显 OP 理解“具有绝对位置的包装器 div”技巧。以下内容适用于学习 CSS 的人):

  • .table .tr-inputs thposition: relative所以它作为子绝对定位对象的引用。我们没有设置任何关于宽度的东西(所以它是完全自动的),我们设置了 padding-bottom: 1.2rem保留th我们的绝对定位元素具有正确的高度(因为绝对定位元素从流中移除并且“不占用任何空间”)。
  • .table .tr-inputs div是我们的包装 div。我们设置position: absolute并设置所有 top , right , left , bottom0 .然后,它自我拉伸(stretch)以填充它的 relative positioned parent ,这是我们的 .table .tr-inputs th .
  • inputwidth: 100%所以它占用了其父级的所有宽度,也就是我们的 absolute positioned包装 div。

  • .table {
    font-family: Arial, Helvetica, sans-serif;
    }

    .table thead {
    position: sticky;
    top: 0;
    }

    .table thead th {
    border: 1px solid #e4eff8;
    background: white;
    cursor: pointer;
    }

    .table thead th.header-label {
    cursor: pointer;
    background: linear-gradient(0deg, #e4eff8, #4578a2 5%, #e4eff8 150%);
    color: white;
    border: 1px solid white;
    }

    .table th,
    .table td {
    padding: 0.2rem 0.5rem;
    text-align: center;
    }

    .table td {
    border: 1px solid #e4eff8;
    }

    .table .tr-inputs th {
    position: relative;
    padding: 0;
    padding-bottom: 1.2rem;
    margin: 0;
    }

    .table .tr-inputs div {
    position: absolute;
    display: inline-block;
    top: 0;
    right: 0;
    bottom: 0;
    left: 0;
    }

    .table input {
    width: 100%;
    box-sizing: border-box;
    }
    <table class="table">
    <thead>
    <tr>
    <th class="header-label">Index</th>
    <th class="header-label">Name</th>
    <th class="header-label">Phone</th>
    <th class="header-label">Company</th>
    <th class="header-label">Registered</th>
    <th class="header-label">Is Active</th>
    </tr>
    <tr class="tr-inputs">
    <th>
    <div><input type="number"></div>
    </th>
    <th>
    <div><input type="string"></div>
    </th>
    <th>
    <div><input type="string"></div>
    </th>
    <th>
    <div><input type="string"></div>
    </th>
    <th>
    <div><input type="date"></div>
    </th>
    <th>
    <div><input type="boolean"></div>
    </th>
    </tr>
    </thead>
    <tbody>
    <tr>
    <td>0</td>
    <td>Paige Bean</td>
    <td>+1 (871) 458-2959</td>
    <td>MOREGANIC</td>
    <td>2018-12-27T11:28:50 -01:00</td>
    <td>false</td>
    </tr>
    <tr>
    <td>1</td>
    <td>Knox Holman</td>
    <td>+1 (880) 497-2808</td>
    <td>MAINELAND</td>
    <td>2017-05-07T02:54:22 -01:00</td>
    <td>false</td>
    </tr>
    <tr>
    <td>2</td>
    <td>Brandy Colon</td>
    <td>+1 (969) 513-2827</td>
    <td>NEXGENE</td>
    <td>2017-06-07T06:42:31 -00:00</td>
    <td>true</td>
    </tr>
    <tr>
    <td>3</td>
    <td>Suzette Austin</td>
    <td>+1 (863) 445-3604</td>
    <td>JETSILK</td>
    <td>2015-10-24T11:10:41 -01:00</td>
    <td>true</td>
    </tr>
    <tr>
    <td>4</td>
    <td>Downs Cain</td>
    <td>+1 (822) 574-2617</td>
    <td>INSECTUS</td>
    <td>2017-10-19T08:18:09 -01:00</td>
    <td>true</td>
    </tr>
    <tr>
    <td>5</td>
    <td>Michael Yang</td>
    <td>+1 (875) 492-3905</td>
    <td>DELPHIDE</td>
    <td>2016-08-15T01:31:55 -01:00</td>
    <td>false</td>
    </tr>
    </tbody>
    </table>

    关于表格单元格内的 HTML 输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62532819/

    29 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com