css表格如何修改表头边框

第一张图片没有向下滚动,表格表头边框是白色,第二种图片表格向下滚动,表格表头边框变成红色,向下滚动表格,如何让表格表头的边框始终保持白色

img

img

<template>
  <div class="container">
    <table>
      <thead>
        <tr>
          <th>序号th>
          <th>标题1th>
          <th>标题2th>
          <th>标题3th>
          <th v-for="i in 30">
            {{ i + i + i }}
          th>
        tr>
      thead>
      <tbody>
        <tr v-for="(item,index) in 100" :key="index">
          <td>1td>
          <td>内容1td>
          <td>内容2td>
          <td>内容3td>
          <td v-for="d in 30">
            {{ d + d + d }}
          td>
        tr>
      tbody>
    table>
  div>

template>
<script>
import { defineComponent, ref,reactive } from 'vue';

export default defineComponent({
  setup() {

    return {

    };
  },
});
script>
<style scoped lang="scss">
.container {
  width: 600px;
  height: 400px;
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  overflow: scroll;
}

table {
  table-layout: fixed;
  border: none;
  border-collapse: collapse;
  background: white;
  text-align: center;

  thead{
   tr{
     color: white;
     height: 70px;
     th{
       background-color: #CCE8EB;
       min-width: 100px;
       position:-webkit-sticky; position:sticky;
       top:0;
       z-index: 3;
       border: 1px solid #fff;
     }
     th:nth-of-type(1) {
       background-color: #269191;
       left:0;
       z-index:4;
     }
     th:nth-of-type(2){
       background-color: #269191;
       left:100px;
       z-index:4;
     }
     th:nth-of-type(3){
       background-color: #269191;
       left:200px;
       z-index:4;
     }
     th:nth-of-type(4){
       background-color: #269191;
       left:300px;
       z-index:4;
     }
   }
 }
 tbody{
   tr{
     height: 50px;
     color: green;
     td{
       min-width: 100px;
       position:-webkit-sticky; position:sticky;
       border: 1px solid red;
     }
     td:nth-of-type(1){
       background-color: #CCE8EB;
       font-weight: bold;
       left: 0;
       z-index:3;
     }
     td:nth-of-type(2){
       background-color: #CCE8EB;
       left: 100px;
       z-index:3;
     }
     td:nth-of-type(3){
       background-color: #CCE8EB;
       left: 200px;
       z-index:3;
     }
     td:nth-of-type(4){
       background-color: #CCE8EB;
       box-shadow: 5px 5px 5px #0078A855;
       left: 300px;
       z-index:3;
     }
   }
 }

}
style>


border-collapse: collapse;的问题,边框塌陷了。

The problem occurs because of the use of border-collapse: collapse. When browsers collapse the borders, the top and bottom border on the <th> must be getting applied to surrounding elements—the top border to the <table> and the bottom border to the following <tr>.

If you use border-collapse: separate and fashion your borders to sit on one side, the borders will truly attach to the <th>, stay fixed as expected, and appear collapsed.

下面有2种解决办法

    table th {
        /* Apply both top and bottom borders to the <th> */
        border-top: 1px solid #f00;
        border-bottom: 1px solid #f00;
        border-right: 1px solid #f00;
    }

    table td {
        /* For cells, apply the border to one of each side only (right but not left, bottom but not top) */
        border-bottom: 1px solid;
        border-right: 1px solid;
    }

    table th:first-child,
    table td:first-child {
        /* Apply a left border on the first <td> or <th> in a row */
        border-left: 1px solid;
    }


伪元素来设置边框

th:after,
th:before {
  content: '';
  position: absolute;
  left: 0;
  width: 100%;
}

th:before {
  top: -1px;
  border-top: 1px solid red;
}

th:after {
  bottom: -1px;
  border-bottom: 2px solid red;
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632