使用 html div 修复和滚动 table 结构
Fix and Scrollable table structure using html div
我想创建一个 table 网格,其中前几列是固定的,其余列可滚动,如图所示。
其余列是动态的,用户可以 select 和 deselect 列。我正在努力使用 div 或 table 来实现 html。需要指导或示例结构才能继续。
使用自定义实现。就这么简单:
table {
table-layout: fixed;
width: 100%;
*margin-left: -100px;/*ie7*/
}
td, th {
vertical-align: top;
border-top: 1px solid #ccc;
padding:10px;
width:100px;
}
.col1{
position:absolute;
*position: relative; /*ie7*/
left:0;
width:100px;
}
.col2{
position:absolute;
*position: relative; /*ie7*/
left:100px;
width:100px;
}
.col3{
position:absolute;
*position: relative; /*ie7*/
left:200px;
width:100px;
}
.col4{
position:absolute;
*position: relative; /*ie7*/
left:300px;
width:100px;
}
.outer {position:relative}
.inner {
overflow-x:scroll;
overflow-y:visible;
width:500px;
margin-left:400px;
}
<div class="outer">
<div class="inner">
<table>
<tr>
<th class="col1">Header A</th>
<th class="col2">Header A</th>
<th class="col3">Header A</th>
<th class="col4">Header A</th>
<td>col 2 - A (WITH LONGER CONTENT)</td>
<td>col 3 - A</td>
<td>col 4 - A</td>
<td>col 5 - A</td>
<td>col 6 - B</td>
<td>col 7 - B</td>
</tr>
<tr>
<th class="col1">Header B</th>
<th class="col2">Header B</th>
<th class="col3">Header B</th>
<th class="col4">Header B</th>
<td>col 2 - B</td>
<td>col 3 - B</td>
<td>col 4 - B</td>
<td>col 5 - B</td>
<td>col 6 - B</td>
<td>col 7 - B</td>
</tr>
<tr>
<th class="col1">Header C</th>
<th class="col2">Header C</th>
<th class="col3">Header C</th>
<th class="col4">Header C</th>
<td>col 2 - C</td>
<td>col 3 - C</td>
<td>col 4 - C</td>
<td>col 5 - C</td>
<td>col 6 - B</td>
<td>col 7 - B</td>
</tr>
</table>
</div>
</div>
或者 jsfiddle:
https://jsfiddle.net/h75zn59o/21/
注:
position:absolute;
是导致第一个 header 列被修复的原因。
与原来的CSS,它只是应用到"th",但使用类(在这个例子中,col1,col2等)
我们可以给不同的列分配不同的固定位置。
因为列的宽度为 100px,所以后面的每一列都向左再放置 100px 因此,第一列为 0px,然后 col2 为 100px,依此类推)以避免与前一列重叠。
是这样的吗?我使用渐变来显示 .scrollable-div
class 正在移动:
html, body {
margin: 0px;
}
.wrapper {
width: 2500px;
height: 200px;
}
.fixed-div {
position: fixed;
float: left;
background: #faaaaa;
width: 500px;
height: 200px;
border-right: solid 3px black;
}
.scrollable-div {
margin-left: 500px;
float: left;
width: 2000px;
height: 200px;
background: #ffe9d3;
background: -moz-linear-gradient(left, #ffe9d3 0%, #b25b03 100%);
background: -webkit-linear-gradient(left, #ffe9d3 0%,#b25b03 100%);
background: linear-gradient(to right, #ffe9d3 0%,#b25b03 100%);
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffe9d3', endColorstr='#b25b03',GradientType=1 );
}
<div class="wrapper">
<div class="fixed-div">
</div>
<div class="scrollable-div">
</div>
</div>
您可以将 table 标记放在 div 中
希望对您有所帮助
我想创建一个 table 网格,其中前几列是固定的,其余列可滚动,如图所示。
其余列是动态的,用户可以 select 和 deselect 列。我正在努力使用 div 或 table 来实现 html。需要指导或示例结构才能继续。
使用自定义实现。就这么简单:
table {
table-layout: fixed;
width: 100%;
*margin-left: -100px;/*ie7*/
}
td, th {
vertical-align: top;
border-top: 1px solid #ccc;
padding:10px;
width:100px;
}
.col1{
position:absolute;
*position: relative; /*ie7*/
left:0;
width:100px;
}
.col2{
position:absolute;
*position: relative; /*ie7*/
left:100px;
width:100px;
}
.col3{
position:absolute;
*position: relative; /*ie7*/
left:200px;
width:100px;
}
.col4{
position:absolute;
*position: relative; /*ie7*/
left:300px;
width:100px;
}
.outer {position:relative}
.inner {
overflow-x:scroll;
overflow-y:visible;
width:500px;
margin-left:400px;
}
<div class="outer">
<div class="inner">
<table>
<tr>
<th class="col1">Header A</th>
<th class="col2">Header A</th>
<th class="col3">Header A</th>
<th class="col4">Header A</th>
<td>col 2 - A (WITH LONGER CONTENT)</td>
<td>col 3 - A</td>
<td>col 4 - A</td>
<td>col 5 - A</td>
<td>col 6 - B</td>
<td>col 7 - B</td>
</tr>
<tr>
<th class="col1">Header B</th>
<th class="col2">Header B</th>
<th class="col3">Header B</th>
<th class="col4">Header B</th>
<td>col 2 - B</td>
<td>col 3 - B</td>
<td>col 4 - B</td>
<td>col 5 - B</td>
<td>col 6 - B</td>
<td>col 7 - B</td>
</tr>
<tr>
<th class="col1">Header C</th>
<th class="col2">Header C</th>
<th class="col3">Header C</th>
<th class="col4">Header C</th>
<td>col 2 - C</td>
<td>col 3 - C</td>
<td>col 4 - C</td>
<td>col 5 - C</td>
<td>col 6 - B</td>
<td>col 7 - B</td>
</tr>
</table>
</div>
</div>
或者 jsfiddle:
https://jsfiddle.net/h75zn59o/21/
注:
position:absolute;
是导致第一个 header 列被修复的原因。
与原来的CSS,它只是应用到"th",但使用类(在这个例子中,col1,col2等)
我们可以给不同的列分配不同的固定位置。
因为列的宽度为 100px,所以后面的每一列都向左再放置 100px 因此,第一列为 0px,然后 col2 为 100px,依此类推)以避免与前一列重叠。
是这样的吗?我使用渐变来显示 .scrollable-div
class 正在移动:
html, body {
margin: 0px;
}
.wrapper {
width: 2500px;
height: 200px;
}
.fixed-div {
position: fixed;
float: left;
background: #faaaaa;
width: 500px;
height: 200px;
border-right: solid 3px black;
}
.scrollable-div {
margin-left: 500px;
float: left;
width: 2000px;
height: 200px;
background: #ffe9d3;
background: -moz-linear-gradient(left, #ffe9d3 0%, #b25b03 100%);
background: -webkit-linear-gradient(left, #ffe9d3 0%,#b25b03 100%);
background: linear-gradient(to right, #ffe9d3 0%,#b25b03 100%);
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#ffe9d3', endColorstr='#b25b03',GradientType=1 );
}
<div class="wrapper">
<div class="fixed-div">
</div>
<div class="scrollable-div">
</div>
</div>
您可以将 table 标记放在 div 中
希望对您有所帮助