我需要使用以下布局创建HTML table
:
[Name]
[Message]
Date]
[Name]
的宽度应该是最长名称的宽度(最大值),[Date]
应该是95px的固定宽度(并向右浮动),而[Message]
1}}应该采用剩余的宽度。
我尝试使用多个div's
,但我无法得到我需要的结果,table
似乎更简单。
到目前为止,以下内容无效:
<table style="width: 100%">
<tr>
<td style="width: 100%; max-width: 100px">NAME</td>
<td style="width: 100%">message</td>
<td style="width: 95px">TIME</td>
</tr>
<tr>
<td style="width: 100%; max-width: 100px">NAME OTHER</td>
<td style="width: 100%">message</td>
<td style="width: 95px">TIME</td>
</tr>
</table>
编辑1 似乎this example正是我所需要的。虽然我仍然认为
table
会更整洁 修改2[Message]
需要允许多行...
根据编辑1中的链接编辑3 Here is a working sample我需要的内容(确切地说)
答案 0 :(得分:1)
由于要求,这不能仅在CSS中完成。第一列应该是灵活的,这很容易(只是防止换行并让列采用其自然宽度),并设置最后一列宽度是微不足道的,但告诉浏览器使用中间列中的所有其余部分(而不是扩展第一列也无法在CSS中完成。如果将其宽度设置为100%,则在某些浏览器中可以使用所需的方式,但其他浏览器(如IE)会以不同的方式对待它。你需要宽度加上100%加95px等于100%,这当然是不可能的,浏览器会以不同的方式处理这个问题。
然而,使用一点点JavaScript药物就会失效:如上所述,使用100%,然后通过将第一列设置为特定宽度(以像素为单位)(使用浏览器分配的值)对表进行后处理,删除width: 100%
设置,并将表格布局设置为固定 - 这意味着浏览器现在有两列宽度固定宽度,总宽度设置为100%,一列没有设置宽度,因此很容易将剩余宽度分配给中间列。
<style>
td:first-child { white-space: nowrap }
td:nth-child(2) { width: 100% }
td:nth-child(3) { width: 95px }
</style>
<table border cellspacing=0 style="width: 100%">
<tr>
<td style="">NAME</td>
<td style="">message</td>
<td style="width:95px">TIME</td>
</tr>
<tr>
<td>NAME OTHER</td>
<td>message</td>
<td>TIME</td>
</tr>
</table>
<script>
(function () {
var row = document.getElementsByTagName('tr')[0];
var cell1 = row.children[0];
cell1.style.width = cell1.clientWidth + 'px';
row.children[1].style.width = 'auto';
document.getElementsByTagName('table')[0].style.tableLayout = 'fixed';
})();
</script>
为简单起见,此代码基于页面上没有其他表的假设。根据需要修改。属性border cellspacing=0
只是使单元格宽度更加明显。
更新:这不解决在第一列上设置最大宽度的问题。除非你指定超出宽度时应该发生什么(截断,自动换行,任何地方换行,用连字包裹?),否则这个要求是欠定义的。
答案 1 :(得分:0)
试试这段代码。
.test
{
max-width:100px;
}
<table style="text-align: center;">
<tr>
<th>NAME</th>
<th>message</th>
<th style="width: 95px">TIME</th>
</tr>
<tr>
<td class="test">NAME OTHER</td>
<td>message</td>
<td style="width: 95px">TIME</td>
</tr>
</table>
答案 2 :(得分:0)
以下.css代码提供了附加图片的模板:
table {
display: table;
width: 100%;
table-layout: fixed;
position: absolute;
top: 10px;
empty-cells: hide;
}
td.small:first-Child {
vertical-align: top;
width: 100px;
overflow: hidden;
text-overflow: ellipsis;
}
td.small:last-Child {
vertical-align: top;
width: 95px;
}
td.extend {
vertical-align: top;
word-wrap: break-word;
}
.userName a {
color: #9DC8FC;
}
<tr>
<td class="small userName">
<a title="Administrator" href="#">Administrator</a>
</td>
<td class="extend">
is it me you're looking for?
</td>
<td class="small">
10:14:01 AM
</td>
</tr>