一张桌子<;td>;基于其他表格的宽度<;td>;使用html/css的宽度

一张桌子<;td>;基于其他表格的宽度<;td>;使用html/css的宽度,html,css,Html,Css,下面是我的代码。尝试为DIV创建一个垂直滚动条,并使我的表头固定,这是可行的 但是,表2的第一列有动态数据,并且该单元格的宽度会根据正在填充的数据进行调整 我需要将我的头1宽度(来自表1)设置为等于表2第1列的宽度 希望有一个简单更好的方法来实现这一点 <table id="table1"> <thead> <tr> <th>Head1</th> <th>

下面是我的代码。尝试为DIV创建一个垂直滚动条,并使我的表头固定,这是可行的

但是,表2的第一列有动态数据,并且该单元格的宽度会根据正在填充的数据进行调整

我需要将我的头1宽度(来自表1)设置为等于表2第1列的宽度

希望有一个简单更好的方法来实现这一点

<table id="table1">
    <thead>
        <tr>
            <th>Head1</th>
            <th>Head2</th>
            <th>Head3</th>
        </tr>
    </thead>
</table>
<div style="max-height: 200px; overflow: auto;">
    <table id="table2">
        <tbody>
            <tr> <td>Contains Dynamic data</td> <td>content</td> <td>content</td> </tr>
            <tr> <td>content</td> <td>content</td> <td>content</td> </tr>
            <tr> <td>content</td> <td>content</td> <td>content</td> </tr>
            <tr> <td>content</td> <td>content</td> <td>content</td> </tr>
        </tbody>
    </table>
</div>

标题1
标题2
总目3
包含动态数据内容
内容
内容
内容

您可以为单元格指定宽度设置(td和th):

如果第一行总是比其他行宽,您可以使用

th, td {
  width: 25%;
}
th:first-child, td:first-child {
  width: 50%;
}

您可以为单元格指定宽度设置(包括
td
th
):

如果第一行总是比其他行宽,您可以使用

th, td {
  width: 25%;
}
th:first-child, td:first-child {
  width: 50%;
}

使用small hack,我假设您知道列中最长的字符串是什么,如果是这样,您可以将其放入span,它将“扩展”您的头,但您将隐藏它

您可以使用javascript实现它,搜索特定列中最长的文本,并将其放在该列的标题处

const headerContainers=document.queryselectoral(“#head row div”);
const maxLengthPerColumn=Array.from(headerContainers.map)(\u=>“”);
from(document.querySelectorAll('#test tr'))
.forEach((row)=>Array.from(row.queryselectoral('td')).forEach((td,index)=>{
maxLengthPerColumn[index]=maxLengthPerColumn[index]。长度{
const span=document.createElement('span');
span.textContent=长文本;
headerContainers[index].appendChild(span);
});
thead th div{
高度:1米;
溢出:隐藏;
文本对齐:左对齐;
}
第四跨{
字体大小:正常;
显示:块;
}
页面内容在这里。
标题1
标题2
总目3
包含动态数据
内容
内容
内容
内容较长的文本
内容
内容
内容
内容
内容
内容
内容
内容
内容
内容
内容
内容
内容
内容
内容
内容
内容
内容
内容
内容
内容
内容
内容
内容
内容
更多页面内容。

Lorem ipsum door sit amet,继续成为一名精英。埃尼安·康莫多·利古拉·埃吉特·多洛。埃尼安·马萨。在自然社会中,因怀孕而死亡的蒙特斯,因饥饿而死亡的蒙特斯,因饥饿而死亡的蒙特斯,因饥饿而死亡的蒙特斯,因饥饿而死亡的蒙特斯,因饥饿而死亡的蒙特斯,因饥饿而死亡的蒙特斯,因饥饿而死亡的蒙特斯,因饥饿而死亡的蒙特斯。Donec quam felis、ultricies nec、pellentesque eu、pretium 奎斯,扫描电镜。这是一个很好的例子。Donec pede justo、fringilla vel、aliquet nec、vulputate eget、arcu。在埃尼姆·胡斯托、朗卡斯·乌特、伊佩拉、维尼那提斯·维塔、胡斯托。猫咪的口头禅是一种很好的口头禅。整数tincidunt。克拉斯·达皮布斯。 万岁。埃尼安·沃普塔特·埃利芬德·泰勒斯。埃尼安·利古拉、波特提托·欧盟、康塞卡特·维泰、埃利芬德·ac、埃尼姆。阿利奎姆·勒姆·安特、达比布斯·安特、维韦拉·奎斯、费吉亚·阿泰勒斯。长生不老不老。奎斯克 芸香。埃涅亚饮食。奥古斯一世。乌兰科乌尔里西斯库拉比图尔酒店。南乙对。艾蒂安·朗库斯。时间之美,调味品之美,自由之美,平等之美。南关 努克、布兰迪特·维尔、卢克图斯·普尔维纳、亨德雷特·艾德、洛雷姆。这是一个非常重要的时刻。不要为威尼斯人的自由而浪费生命。纳拉姆·奎斯·安特。我坐在那里,或者我坐在那里。杜伊斯·利奥。塞德·弗林尼利亚·莫里斯
坐在阿梅特尼布。大矢状背根。Sed consequat、leo eget bibendum sodales、augue velit cursus nunc
我假设您知道列中最长的字符串是什么,如果是这样,您可以将其放在跨度中,它将“扩展”标题,但您将隐藏它

您可以使用javascript实现它,搜索特定列中最长的文本,并将其放在该列的标题处

const headerContainers=document.queryselectoral(“#head row div”);
const maxLengthPerColumn=Array.from(headerContainers.map)(\u=>“”);
from(document.querySelectorAll('#test tr'))
.forEach((row)=>Array.from(row.queryselectoral('td')).forEach((td,index)=>{
maxLengthPerColumn[index]=maxLengthPerColumn[index]。长度{
const span=document.createElement('span');
span.textContent=长文本;
headerContainers[index].appendChild(span);
});
thead th div{
高度:1米;
溢出:隐藏;
文本对齐:左对齐;
}
第四跨{
字体大小:正常;
显示:块;
}
页面内容在这里。
标题1
标题2
总目3
包含动态数据
内容
内容
内容
内容较长的文本
内容
内容
内容
内容
内容
内容
内容
内容