【发布时间】:2019-12-17 16:35:31
【问题描述】:
我创建了一个带有表格的页面,该表格的宽度和高度应填满整个浏览器窗口。第一行是标题,第二行包含三个单元格:第一个单元格的宽度应根据其内容(固定),第二个和第三个单元格的宽度应相等并占据宽度和高度的所有剩余空间.问题是当我通过<col width="50%"> 标签设置它们的宽度时,它们的宽度呈现不同!
这是重现问题的最小工作示例:
<html>
<head>
<meta charset="utf-8">
<style type="text/css">
body {
background: #CCCCCC;
margin: 0px;
}
table {
border-spacing: 15px 0px;
width: 100%;
height: 100%;
}
.panelsMain {
display: inline-block;
background: white;
padding: 0px;
margin: 0px;
border-radius: 5px;
width: 100%;
height: 98%;
}
</style>
</head>
<body>
<table id="mainTable">
<col width="auto">
<col width="50%">
<col width="50%">
<tr height="50px" valign="top">
<td colspan="3" style="text-align: center">
<h1>Header</h1>
</td>
</tr>
<tr>
<td valign="top">
<p style="width:200px">
some objects of fixed width
</p>
</td>
<td valign="top" height="100%">
<div class="panelsMain">
sssssssssssssssssssssssssssssssssssssss
</div>
</td>
<td valign="top" height="100%">
<div class="panelsMain">
fffffffff
</div>
</td>
</tr>
</table>
</body>
</html>
如何使第二列和第三列的宽度相等?
更新
使用Aravind Anil 建议的方法,我得到了以下解决方案,它几乎完全符合我的需求,除了面板之间的距离错误(应该等于15px 和border-spacing: 中的border-spacing: table):
<html>
<head>
<meta charset="utf-8">
<style type="text/css">
body {
background: #CCCCCC;
margin: 0px;
}
table {
border-spacing: 15px 0px;
width: 100%;
height: 100%;
}
.panelsMain {
display: inline-block;
background: white;
padding: 0px;
margin: 0px;
border-radius: 5px;
width: 50%;
height: 98%;
}
</style>
</head>
<body>
<table id="mainTable">
<col width="auto">
<col width="auto">
<tr height="50px" valign="top">
<td colspan="3" style="text-align: center">
<h1>Header</h1>
</td>
</tr>
<tr>
<td valign="top">
<p style="width:200px">some objects of fixed width</p>
</td>
<td valign="top" height="100%"><nobr>
<div class="panelsMain">sssssssssssssssssssssssssssssssssssssss</div>
<div class="panelsMain">fffffffff</div></nobr>
</td>
</tr>
</table>
</body></html>
通过为第二个面板设置margin-left:15px 来增加距离的尝试并没有得到预期的结果:第二个面板只是向右移动了 15 个像素并离开了窗口。如何控制面板之间的距离?
【问题讨论】:
-
您是否尝试将这些列(需要具有相同大小的列)绑定到单个 div 中,然后应用宽度 = 50% 的相同类
-
@AravindAnil 像这样:
<div style="width:50%"><td>...</td><td>...</td></div>?它不会改变外观。还是我只是误会了你?你能举个例子吗? -
在我开始误导你之前,你是否有必要将html结构保留为3
? @AravindAnil 实际上我在第二个<tr>中有 2 个<tr>和 3 个<td>。而不是,我只需要外观,其他方法也适合。仅供参考:valign是已弃用的 HTML5 属性,应替换为 CSS 规则。
标签: html