在表格单元格边框间距 CSS 中可以看到隐藏的行/列

Posted

技术标签:

【中文标题】在表格单元格边框间距 CSS 中可以看到隐藏的行/列【英文标题】:Hidden row/columns can be seen in table cell border-spacing CSS 【发布时间】:2022-01-13 00:05:45 【问题描述】:

我有一个固定 x 顶行数和 y 左列数的表格。

点赞:https://jsfiddle.net/26m75fge/11/

CSS:

div 
  max-width: 40em;
  max-height: 20em;
  overflow: scroll;
  position: relative;
 


table 
  position: relative;
  border-collapse: collapse;


td,
th 
  padding: 0.25em;
  border: 0.25em solid white;


thead tr:nth-child(1) 
  position: -webkit-sticky; /* for Safari */
  position: sticky;
  top: 0.25em;
  background: #000;
  color: #FFF;
  z-index: 2;


thead tr:nth-child(2) 
  position: -webkit-sticky; /* for Safari */
  position: sticky;
  top: 2em;
  background: #000;
  color: #FFF;
  z-index: 2;


thead th:first-child 
  left: 0;
  z-index: 1;


tbody th 
  position: -webkit-sticky; /* for Safari */
  position: sticky;
  left: 0;
  background: #FFF;
  border-right: 1px solid #CCC;

html

  <table>
    <thead>
      <tr>
        <th></th>
        <th>head</th>
        <th>head</th>
        <th>head</th>
        <th>head</th>
        <th>head</th>
        <th>head</th>
        <th>head</th>
        <th>head</th>
        <th>head</th>
        <th>head</th>
        <th>head</th>
        <th>head</th>
        <th>head</th>
        <th>head</th>
    ....
      </tr>
      <tr>
        <th></th>
        <th>head</th>
        <th>head</th>
        <th>head</th>
        <th>head</th>
        <th>head</th>
        <th>head</th>
        <th>head</th>
        <th>head</th>
        <th>head</th>
        <th>head</th>
        <th>head</th>
        <th>head</th>
        <th>head</th>
        <th>head</th>
        <th>head</th>
        <th>head</th>
        <th>head</th>
        <th>head</th>
        <th>head</th>
        <th>head</th>
        <th>head</th>
        <th>head</th>
        <th>head</th>
        <th>head</th>
        <th>head</th>
 ....
      </tr>
    </thead>
    <tbody>
      <tr>
        <th>head</th>
        <td>body</td>
        <td>body</td>
        <td>body</td>
        <td>body</td>
        <td>body</td>
        <td>body</td>
        <td>body</td>
        <td>body</td>
        <td>body</td>
        <td>body</td>
        <td>body</td>
        <td>body</td>
        <td>body</td>
        <td>body</td>
        <td>body</td>
        <td>body</td>
        <td>body</td>
        <td>body</td>
        <td>body</td>
        <td>body</td>
        <td>body</td>
        <td>body</td>
        <td>body</td>
        <td>body</td>
        <td>body</td>
       .....
      </tr>
    </tbody>
  </table>
</div>

但是,当我滚动其他单元格时,我可以在表格的背景/边框间距中看到“隐藏”行。 (参见:边框间距中的单元格)

有没有办法使用 CSS/JS 隐藏这些边框,以便这些单元格在滚动后不会显示?

cells in border spacing

【问题讨论】:

【参考方案1】:

设置边框样式:隐藏;用于表、tad、tbody、tr 然后将您的 th、td 填充和边框更改为所需的总长度,最后更改为 top: 0;对于粘性元素。见下文。

div 
  max-width: 40em;
  max-height: 20em;
  overflow: scroll;
  position: relative;


table 
  position: relative;
  border-collapse: collapse;
  

table, thead, tbody, tr 
  border-style: hidden;


td,
th 
  padding: 0.4em;
  border: 0.4em solid white;


thead 
  position: -webkit-sticky; /* for Safari */
  position: sticky;
  top: 0;
  background: #000;
  color: #FFF;
  z-index: 2;


thead th:first-child 
  left: 0;
  z-index: 1;


tbody th 
  position: -webkit-sticky; /* for Safari */
  position: sticky;
  left: 0;
  background: #FFF;
  border-right: 1px solid #CCC;

【讨论】:

【参考方案2】:

您可以将其添加到您的 css 中:

th 
  position: sticky;
  height: 50px;
  width: 100%;
  background: white;

根据需要调整这些值。此外,请参考以下其他来源: How to stick table header(thead) on top while scrolling down the table rows with fixed header(navbar) in bootstrap 3?

https://css-tricks.com/position-sticky-and-table-headers/

【讨论】:

以上是关于在表格单元格边框间距 CSS 中可以看到隐藏的行/列的主要内容,如果未能解决你的问题,请参考以下文章

html中表格内容超出后隐藏问题

html表格单元格间距设不了是为啥

代码单元格间距怎么设置

前端入门HTML基础元素3,表格

用table绘制 等宽等间距的单元

html 怎么设置单元格之间的线?