How to modify the style of the scroll bar in the Table component in vue | element-ui

Problem Description

In the Table table, a scroll bar will appear when the content exceeds the container. Sometimes the scroll bar provided by elemnt-ui cannot meet the needs, so we can customize the scroll bar through CSS pseudo-classes.

The scroll bar consists of two parts:

  • Slider: The part that can be slid.
  • Track: The track of the scroll bar, that is, the track of the slider. Generally speaking, the color of the slider is darker than the color of the track.

solution

1. CSS style components of the scroll bar:

::-webkit-scrollbar         滚动条整体部分
::-webkit-scrollbar-thumb   滚动条里面的滑块,能向上向下移动(或往左往右移动,取决于是垂直滚动条还是水平滚动条)
::-webkit-scrollbar-track   滚动条的轨道(里面装有Thumb)
::-webkit-scrollbar-button  滚动条的轨道的两端按钮,允许通过点击微调小方块的位置。
::-webkit-scrollbar-track-piece  内层轨道,滚动条中间部分(除去)
::-webkit-scrollbar-corner  边角,即两个滚动条的交汇处
::-webkit-resizer  两个滚动条的交汇处上用于通过拖动调整元素大小的小控件

2. Modify a single scroll bar style

<style lang="scss" scoped>
.el-table {
  /deep/ .el-table__body-wrapper::-webkit-scrollbar {
      width: 10px; /*滚动条宽度*/
      height: 10px; /*滚动条高度*/
  }
  /*定义滚动条轨道 内阴影+圆角*/
  /deep/ .el-table__body-wrapper::-webkit-scrollbar-track {
      box-shadow: 0px 1px 3px #071e4a inset; /*滚动条的背景区域的内阴影*/
      border-radius: 10px; /*滚动条的背景区域的圆角*/
      background-color: #071e4a; /*滚动条的背景颜色*/
  }
  /*定义滑块 内阴影+圆角*/
  /deep/ .el-table__body-wrapper::-webkit-scrollbar-thumb {
      box-shadow: 0px 1px 3px #00a0e9 inset; /*滚动条的内阴影*/
      border-radius: 10px; /*滚动条的圆角*/
      background-color: #00a0e9; /*滚动条的背景颜色*/
  }
}
</style>

3. Modify the global scroll bar style (recommended)

HTML code

<template>
  <div class="wrap">
    <el-table
      :data="tableData"
      height="300"
      border>
      <el-table-column prop="date" label="日期" width="250"></el-table-column>
      <el-table-column prop="name" label="姓名" width="250"></el-table-column>
      <el-table-column prop="address" label="地址"></el-table-column>
    </el-table>
    <hr/>
    <div style="height:300px;overflow:auto;">
      <div style="height:500px;width:100%;"></div>
    </div>
  </div>
</template>

<script>
export default {
  data() { 
    return {
      tableData: [
        {
          date: '2016-05-03',
          name: '王小虎',
          address: '上海市普陀区金沙江路 1518 弄'
        }, {
          date: '2016-05-02',
          name: '王小虎',
          address: '上海市普陀区金沙江路 1518 弄'
        }, {
          date: '2016-05-04',
          name: '王小虎',
          address: '上海市普陀区金沙江路 1518 弄'
        }, {
          date: '2016-05-01',
          name: '王小虎',
          address: '上海市普陀区金沙江路 1518 弄'
        }, {
          date: '2016-05-08',
          name: '王小虎',
          address: '上海市普陀区金沙江路 1518 弄'
        }, {
          date: '2016-05-06',
          name: '王小虎',
          address: '上海市普陀区金沙江路 1518 弄'
        }, {
          date: '2016-05-07',
          name: '王小虎',
          address: '上海市普陀区金沙江路 1518 弄'
        }
      ]
    } 
  }, 
}
</script> 

CSS code

Put the following code into the css of index.html, or into the css style of app.vue.

<style lang="scss">
::-webkit-scrollbar {
  width: 6px;
  height: 8px;
  background-color: #ebeef5;
}
::-webkit-scrollbar-thumb {
  box-shadow: inset 0 0 6px rgba(0, 0, 0, .3);
  -webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, .3);
  background-color: #ccc;
}
::-webkit-scrollbar-track{
  box-shadow: inset 0 0 5px rgba(0, 0, 0, 0.2);
  border-radius: 3px;
  background: rgba(255, 255, 255, 1);
}
</style>

So far, our problem of modifying the scroll bar style in the Table component has been solved. Here, I would like to express my gratitude to the article written by @我要吃什么大人 for allowing me to complete the arrangement of this method. Thank you very much.

Guess you like

Origin blog.csdn.net/weixin_54558746/article/details/130054327