第一张图片没有向下滚动,表格表头边框是白色,第二种图片表格向下滚动,表格表头边框变成红色,向下滚动表格,如何让表格表头的边框始终保持白色
<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.
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;
}