CSS表冻结的第一列与行的高度不同

时间:2017-07-06 09:36:57

标签: html css

尝试冻结表格的第一列,我设法这样做但我似乎无法调整第一个单元格和行的其余部分的高度, 如图所示 enter image description here

这是一个jsfiddle

.headcol {
    position: absolute;
    width: 5em;
    left: 0;
    top: auto;
    border-top-width: 1px;
    /*only relevant for first row*/
    margin-top: -1px;
    /*compensate for top border*/
    background: white;
    border-right: 4px solid black;

}

1 个答案:

答案 0 :(得分:1)

您的问题是columnfixed rowhead的不同高度。

HTML-Elements position-absolut仅获取innerHTML的高度。

我经常向您的min-height&添加了columnsheaders。以及min-width以获得更好的风格。您可以更改JSFiddle here.

.grades-table {
  overflow-x:scroll;
  overflow-y:visible;
  margin-left: 5em;
}

.grades-header,
.grades-column {
  min-width: 150px;
  min-height: 38px;
  text-align: center;
}

.headcol {
  position: absolute;
  width: 5em;
  min-height: 38px;
  left: 0;
  top: auto;
  border-top-width: 1px;
  margin-top: -1px;
  background: white;
  border-right: 4px solid black;
}

.headcol-text {
  position: absolute;
  transform: translate(-50%, -50%);
  top: 50%;
  left: 50%;
}
<div class="grades-table">
<table>
  <thead>
    <tr>
      <th class="headcol">students</th>
      <th class="grades-header">01_getting_started</th>
      <th class="grades-header">02_courses</th>
      <th class="grades-header">03_tasks</th>
      <th class="grades-header">04_run_student</th>
      <th class="grades-header">05_fetching_input</th>
      <th class="grades-header">06_feedback</th>
      <th class="grades-header">07_advance_feedback</th>
      <th class="grades-header">08_archive</th>
      <th class="grades-header">09_ssh_debug</th>
      <th class="grades-header">10_environments</th>
    </tr>
  </thead>
  <tbody>
    <tr class="grades-row">
      <th class="headcol">
        <div class="headcol-text">
          student1
        </div>
      </th>
      <td class="grades-column"><a href="#">01</a><br><a href="#">X days ago</a></td>
      <td class="grades-column"><a href="#">02</a><br><a href="#">X days ago</a></td>
      <td class="grades-column"><a href="#">03</a><br><a href="#">X days ago</a></td>
      <td class="grades-column"><a href="#">04</a><br><a href="#">X days ago</a></td>
      <td class="grades-column"><a href="#">05</a><br><a href="#">X days ago</a></td>
      <td class="grades-column"><a href="#">06</a><br><a href="#">X days ago</a></td>
      <td class="grades-column"><a href="#">07</a><br><a href="#">X days ago</a></td>
      <td class="grades-column"><a href="#">08</a><br><a href="#">X days ago</a></td>
      <td class="grades-column"><a href="#">09</a><br><a href="#">X days ago</a></td>
      <td class="grades-column"><a href="#">10</a><br><a href="#" href="#">X days ago</a></td>
    </tr>
  </tbody>
</table>
</div>