search

Home  >  Q&A  >  body text

Sticky td with rowspan attribute exceeds table bounds when scrolling

I have a table with sticky headers and sticky tds with row spans in it. When it scrolls, the td and rowspan appear on top of its header (which is the first column according to this example). Specifying a z-index will place the header on top of the td but overlap its text. How can I prevent this from happening? My first version had no row spans, contained empty cells and behaved correctly.

* {
  padding: 0;
  margin: 0;
  box-sizing: border-box;
}

/*
.wrapper {
  overflow: auto;
  height: 20rem;
}
*/

table {
  display: block;
  overflow: auto;
  height: 20rem;
  border-collapse: separate;
  border-spacing: 0;
}

thead {
  position: sticky;
  top: 0;
  background-color: #333;
  color: #fff;
  /* z-index: 100; */
}

thead th {
  border: 0.1rem solid #ddd;
}

tbody tr:nth-child(even) {
  background-color: #ddd;
}

tbody td {
  padding: 0 0.5rem;
}

tbody td[rowspan] {
  border-top: 0.1rem solid #999;
  vertical-align: top;
  position: sticky;
  top: 1.4rem;
  background-color: #fff;
  /* z-index: 10; */
}
<!-- <div class="wrapper"> -->
<table>
  <thead>
    <tr>
      <th>col1</th>
      <th>col2</th>
      <th>col3</th>
      <th>col4</th>
      <th>col5</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td rowspan="10">cell_text_1</td>
      <td rowspan="4">cell_text</td>
      <td rowspan="">cell_text</td>
      <td>cell_text</td>
      <td>cell_text</td>
    </tr>
    <tr>
      <td rowspan="">cell_text</td>
      <td>cell_text</td>
      <td>cell_text</td>
    </tr>
    <tr>
      <td rowspan="">cell_text</td>
      <td>cell_text</td>
      <td>cell_text</td>
    </tr>
    <tr>
      <td rowspan="">cell_text</td>
      <td>cell_text</td>
      <td>cell_text</td>
    </tr>
    <tr>
      <td rowspan="4">cell_text</td>
      <td rowspan="">cell_text</td>
      <td>cell_text</td>
      <td>cell_text</td>
    </tr>
    <tr>
      <td rowspan="">cell_text</td>
      <td>cell_text</td>
      <td>cell_text</td>
    </tr>
    <tr>
      <td rowspan="">cell_text</td>
      <td>cell_text</td>
      <td>cell_text</td>
    </tr>
    <tr>
      <td rowspan="">cell_text</td>
      <td>cell_text</td>
      <td>cell_text</td>
    </tr>
    <tr>
      <td rowspan="2">cell_text</td>
      <td rowspan="">cell_text</td>
      <td>cell_text</td>
      <td>cell_text</td>
    </tr>
    <tr>
      <td rowspan="">cell_text</td>
      <td>cell_text</td>
      <td>cell_text</td>
    </tr>
    <tr>
      <td rowspan="10">cell_text_2</td>
      <td rowspan="5">cell_text</td>
      <td rowspan="">cell_text</td>
      <td>cell_text</td>
      <td>cell_text</td>
    </tr>
    <tr>
      <td rowspan="">cell_text</td>
      <td>cell_text</td>
      <td>cell_text</td>
    </tr>
    <tr>
      <td rowspan="">cell_text</td>
      <td>cell_text</td>
      <td>cell_text</td>
    </tr>
    <tr>
      <td rowspan="">cell_text</td>
      <td>cell_text</td>
      <td>cell_text</td>
    </tr>
    <tr>
      <td rowspan="">cell_text</td>
      <td>cell_text</td>
      <td>cell_text</td>
    </tr>
    <tr>
      <td rowspan="5">cell_text</td>
      <td rowspan="">cell_text</td>
      <td>cell_text</td>
      <td>cell_text</td>
    </tr>
    <tr>
      <td rowspan="">cell_text</td>
      <td>cell_text</td>
      <td>cell_text</td>
    </tr>
    <tr>
      <td rowspan="">cell_text</td>
      <td>cell_text</td>
      <td>cell_text</td>
    </tr>
    <tr>
      <td rowspan="">cell_text</td>
      <td>cell_text</td>
      <td>cell_text</td>
    </tr>
    <tr>
      <td rowspan="">cell_text</td>
      <td>cell_text</td>
      <td>cell_text</td>
    </tr>
    <tr>
      <td rowspan="18">cell_text_3</td>
      <td rowspan="6">cell_text</td>
      <td rowspan="">cell_text</td>
      <td>cell_text</td>
      <td>cell_text</td>
    </tr>
    <tr>
      <td rowspan="">cell_text</td>
      <td>cell_text</td>
      <td>cell_text</td>
    </tr>
    <tr>
      <td rowspan="">cell_text</td>
      <td>cell_text</td>
      <td>cell_text</td>
    </tr>
    <tr>
      <td rowspan="">cell_text</td>
      <td>cell_text</td>
      <td>cell_text</td>
    </tr>
    <tr>
      <td rowspan="">cell_text</td>
      <td>cell_text</td>
      <td>cell_text</td>
    </tr>
    <tr>
      <td rowspan="">cell_text</td>
      <td>cell_text</td>
      <td>cell_text</td>
    </tr>
    <tr>
      <td rowspan="7">cell_text</td>
      <td rowspan="">cell_text</td>
      <td>cell_text</td>
      <td>cell_text</td>
    </tr>
    <tr>
      <td rowspan="">cell_text</td>
      <td>cell_text</td>
      <td>cell_text</td>
    </tr>
    <tr>
      <td rowspan="">cell_text</td>
      <td>cell_text</td>
      <td>cell_text</td>
    </tr>
    <tr>
      <td rowspan="">cell_text</td>
      <td>cell_text</td>
      <td>cell_text</td>
    </tr>
    <tr>
      <td rowspan="">cell_text</td>
      <td>cell_text</td>
      <td>cell_text</td>
    </tr>
    <tr>
      <td rowspan="">cell_text</td>
      <td>cell_text</td>
      <td>cell_text</td>
    </tr>
    <tr>
      <td rowspan="">cell_text</td>
      <td>cell_text</td>
      <td>cell_text</td>
    </tr>
    <tr>
      <td rowspan="5">cell_text</td>
      <td rowspan="">cell_text</td>
      <td>cell_text</td>
      <td>cell_text</td>
    </tr>
    <tr>
      <td rowspan="">cell_text</td>
      <td>cell_text</td>
      <td>cell_text</td>
    </tr>
    <tr>
      <td rowspan="">cell_text</td>
      <td>cell_text</td>
      <td>cell_text</td>
    </tr>
    <tr>
      <td rowspan="">cell_text</td>
      <td>cell_text</td>
      <td>cell_text</td>
    </tr>
    <tr>
      <td rowspan="">cell_text</td>
      <td>cell_text</td>
      <td>cell_text</td>
    </tr>
    <tr>
      <td rowspan="12">cell_text_4</td>
      <td rowspan="6">cell_text</td>
      <td rowspan="">cell_text</td>
      <td>cell_text</td>
      <td>cell_text</td>
    </tr>
    <tr>
      <td rowspan="">cell_text</td>
      <td>cell_text</td>
      <td>cell_text</td>
    </tr>
    <tr>
      <td rowspan="">cell_text</td>
      <td>cell_text</td>
      <td>cell_text</td>
    </tr>
    <tr>
      <td rowspan="">cell_text</td>
      <td>cell_text</td>
      <td>cell_text</td>
    </tr>
    <tr>
      <td rowspan="">cell_text</td>
      <td>cell_text</td>
      <td>cell_text</td>
    </tr>
    <tr>
      <td rowspan="">cell_text</td>
      <td>cell_text</td>
      <td>cell_text</td>
    </tr>
    <tr>
      <td rowspan="6">cell_text</td>
      <td rowspan="">cell_text</td>
      <td>cell_text</td>
      <td>cell_text</td>
    </tr>
    <tr>
      <td rowspan="">cell_text</td>
      <td>cell_text</td>
      <td>cell_text</td>
    </tr>
    <tr>
      <td rowspan="">cell_text</td>
      <td>cell_text</td>
      <td>cell_text</td>
    </tr>
    <tr>
      <td rowspan="">cell_text</td>
      <td>cell_text</td>
      <td>cell_text</td>
    </tr>
    <tr>
      <td rowspan="">cell_text</td>
      <td>cell_text</td>
      <td>cell_text</td>
    </tr>
    <tr>
      <td rowspan="">cell_text</td>
      <td>cell_text</td>
      <td>cell_text</td>
    </tr>
  </tbody>
</table>
<!-- </div> -->

P粉210405394P粉210405394252 days ago462

reply all(1)I'll reply

  • P粉724737511

    P粉7247375112024-03-22 00:48:40

    Try the following, the line spacing is wrong

    * {
      padding: 0;
      margin: 0;
      box-sizing: border-box;
    }
    
    /*
    .wrapper {
      overflow: auto;
      height: 20rem;
    }
    */
    
    table {
      display: block;
      overflow: auto;
      height: 20rem;
      border-collapse: separate;
      border-spacing: 0;
    }
    
    thead {
      position: sticky;
      top: 0;
      background-color: #333;
      color: #fff;
      z-index: 100;
    }
    
    thead th {
      border: 0.1rem solid #ddd;
    }
    
    tbody tr:nth-child(even) {
      background-color: #ddd;
    }
    
    tbody td {
      padding: 0 0.5rem;
    }
    
    tbody td[rowspan] {
      border-top: 0.1rem solid #999;
      vertical-align: top;
      position: sticky;
      top: 1.4rem;
      background-color: #fff;
      /* z-index: 10; */
    }
    col1 col2 col3 col4 col5
    cell_text_1 cell_text cell_text cell_text cell_text
    cell_text cell_text cell_text
    cell_text cell_text cell_text
    cell_text cell_text cell_text
    cell_text cell_text cell_text cell_text
    cell_text cell_text cell_text
    cell_text cell_text cell_text
    cell_text cell_text cell_text
    cell_text cell_text cell_text cell_text
    cell_text cell_text cell_text
    cell_text_2 cell_text cell_text cell_text cell_text
    cell_text cell_text cell_text
    cell_text cell_text cell_text
    cell_text cell_text cell_text
    cell_text cell_text cell_text
    cell_text cell_text cell_text cell_text
    cell_text cell_text cell_text
    cell_text cell_text cell_text
    cell_text cell_text cell_text
    cell_text cell_text cell_text
    cell_text_3 cell_text cell_text cell_text cell_text
    cell_text cell_text cell_text
    cell_text cell_text cell_text
    cell_text cell_text cell_text
    cell_text cell_text cell_text
    cell_text cell_text cell_text
    cell_text cell_text cell_text cell_text
    cell_text cell_text cell_text
    cell_text cell_text cell_text
    cell_text cell_text cell_text
    cell_text cell_text cell_text
    cell_text cell_text cell_text
    cell_text cell_text cell_text
    cell_text cell_text cell_text cell_text
    cell_text cell_text cell_text
    cell_text cell_text cell_text
    cell_text cell_text cell_text
    cell_text cell_text cell_text
    cell_text_4 cell_text cell_text cell_text cell_text
    cell_text cell_text cell_text
    cell_text cell_text cell_text
    cell_text cell_text cell_text
    cell_text cell_text cell_text
    cell_text cell_text cell_text
    cell_text cell_text cell_text cell_text
    cell_text cell_text cell_text
    cell_text cell_text cell_text
    cell_text cell_text cell_text
    cell_text cell_text cell_text
    cell_text cell_text cell_text
    cell_text_5 cell_text cell_text cell_text cell_text
    cell_text cell_text cell_text
    cell_text cell_text cell_text
    cell_text cell_text cell_text
    cell_text cell_text cell_text
    cell_text cell_text cell_text
    cell_text cell_text cell_text cell_text
    cell_text cell_text cell_text
    cell_text cell_text cell_text
    cell_text cell_text cell_text
    cell_text cell_text cell_text
    cell_text cell_text cell_text

    reply
    0
  • Cancelreply