Table 忽略了列宽
Table column widths ignored
我不知道为什么我内心的 table 会忽略列宽。内部 table 的所有列最终都是相同的宽度。任何帮助或建议将不胜感激。宽度是根据返回的列数和类型生成的。
外部 table 有几百行,每个内部 table 有 50 到 100 行。将来我可能会添加某种过滤器来限制外部行的数量以提高性能。我不擅长 html,对 CSS 和 JavaScript 只有初步的了解,但从我读过的所有内容来看,这应该可行。
我查看了 chrome 开发人员工具元素,看看我是否可以弄清楚宽度在外部 table 中的工作原理,但我没有看到它从哪里获取来自colgroup的宽度,所以这似乎是一个死胡同。我可能对某些事情有基本的误解。
<!DOCTYPE html>
<html>
<head>
<style>
th {
text-align: left;
}
.change {
background-color: gold ;
}
</style>
</head>
<body>
<form action="" method="POST">
<h2>Heading</h2>
<table id="tableID">
<colgroup>
<col width='5%' />
<col width='15%' />
<col width='10%' />
<col width='70%' />
</colgroup>
<thead>
<tr>
<th width='2%'>Flag</th>
<th>Name</th>
<th>Key</th>
<th>Children</th>
</tr>
</thead>
<tbody>
<tr>
<td><input type='checkbox' checked value='Y' /></td>
<td><input type='text' value='Activity' /></td>
<td><input type='text' value='UNQ' class='change' /></td>
<td>
<details width='100%'>
<summary>Children</summary>
<table width='100%'>
<colgroup>
<col width='5%' />
<col width='5%' />
<col width='10%' />
<col width='5%' />
<col width='5%' />
<col width='80%' />
</colgroup>
<thead>
<tr>
<th>Flag</th>
<th>Seq</th>
<th>Name</th>
<th>Key</th>
<th>Mandatory</th>
<th>Parent</th>
<th>Desc</th>
</tr>
</thead>
<tbody>
<tr>
<td><input type='text' value='N' /></td>
<td><input type='text' value='1' /></td>
<td><input type='text' value='AddBy' /></td>
<td><input type='text' value='N' /></td>
<td><input type='text' value='N' class='change' /></td>
<td><input type='text' value='N' /></td>
<td><input type='text' value='Add By' /></td>
</tr>
</tbody>
</table>
</details>
</td>
</tr>
</tbody>
</table>
<input type="submit" value="Submit" />
</form>
</html>
您嵌入的 table 所有列的宽度都相同,这不是因为它是嵌入的 table,而是因为它的单元格包含 input
没有指定宽度的元素.由于缺乏规范,他们采用 Web 浏览器的默认样式规范。要使 table 单元格与指定的列宽匹配,您可以添加以下 CSS。根据您网页上其他 input
元素的上下文,您可能需要使用更具体的选择器。
input {
width: 100%;
}
我不知道为什么我内心的 table 会忽略列宽。内部 table 的所有列最终都是相同的宽度。任何帮助或建议将不胜感激。宽度是根据返回的列数和类型生成的。
外部 table 有几百行,每个内部 table 有 50 到 100 行。将来我可能会添加某种过滤器来限制外部行的数量以提高性能。我不擅长 html,对 CSS 和 JavaScript 只有初步的了解,但从我读过的所有内容来看,这应该可行。
我查看了 chrome 开发人员工具元素,看看我是否可以弄清楚宽度在外部 table 中的工作原理,但我没有看到它从哪里获取来自colgroup的宽度,所以这似乎是一个死胡同。我可能对某些事情有基本的误解。
<!DOCTYPE html>
<html>
<head>
<style>
th {
text-align: left;
}
.change {
background-color: gold ;
}
</style>
</head>
<body>
<form action="" method="POST">
<h2>Heading</h2>
<table id="tableID">
<colgroup>
<col width='5%' />
<col width='15%' />
<col width='10%' />
<col width='70%' />
</colgroup>
<thead>
<tr>
<th width='2%'>Flag</th>
<th>Name</th>
<th>Key</th>
<th>Children</th>
</tr>
</thead>
<tbody>
<tr>
<td><input type='checkbox' checked value='Y' /></td>
<td><input type='text' value='Activity' /></td>
<td><input type='text' value='UNQ' class='change' /></td>
<td>
<details width='100%'>
<summary>Children</summary>
<table width='100%'>
<colgroup>
<col width='5%' />
<col width='5%' />
<col width='10%' />
<col width='5%' />
<col width='5%' />
<col width='80%' />
</colgroup>
<thead>
<tr>
<th>Flag</th>
<th>Seq</th>
<th>Name</th>
<th>Key</th>
<th>Mandatory</th>
<th>Parent</th>
<th>Desc</th>
</tr>
</thead>
<tbody>
<tr>
<td><input type='text' value='N' /></td>
<td><input type='text' value='1' /></td>
<td><input type='text' value='AddBy' /></td>
<td><input type='text' value='N' /></td>
<td><input type='text' value='N' class='change' /></td>
<td><input type='text' value='N' /></td>
<td><input type='text' value='Add By' /></td>
</tr>
</tbody>
</table>
</details>
</td>
</tr>
</tbody>
</table>
<input type="submit" value="Submit" />
</form>
</html>
您嵌入的 table 所有列的宽度都相同,这不是因为它是嵌入的 table,而是因为它的单元格包含 input
没有指定宽度的元素.由于缺乏规范,他们采用 Web 浏览器的默认样式规范。要使 table 单元格与指定的列宽匹配,您可以添加以下 CSS。根据您网页上其他 input
元素的上下文,您可能需要使用更具体的选择器。
input {
width: 100%;
}