vue elementui table去掉滚动条与实现表格自动滚动且无滚动条

当table内容列过多时,可通过height属性设置table高度以固定table高度、固定表头,使table内容可以滚动。

现在需求是右侧滚动条不好看,需要去除滚动条,并隐藏滚动条所占列的位置。让他可以滚动但是不出现滚动条,不然即时隐藏了滚动条也会有一个空白列影响占位的。

css 复制代码
// ----------修改elementui表格的默认样式-----------
.el-table__body-wrapper {
  &::-webkit-scrollbar { // 整个滚动条
    width: 0; // 纵向滚动条的宽度
    background: rgba(213,215,220,0.3);
    border: none;
  }
  &::-webkit-scrollbar-track { // 滚动条轨道
    border: none;
  }
}
// --------------------隐藏table gutter列和内容区右侧的空白 start
.el-table th.gutter{
  display: none;
  width:0
}
.el-table colgroup col[name='gutter']{
  display: none;
  width: 0;
}
.el-table__body{
  width: 100% !important;
}
// --------------------隐藏table gutter列和内容区右侧的空白 end

如果样式不想影响全局,可以使用样式穿透

css 复制代码
::v-deep .el-table__body-wrapper {
    // 整个滚动条
    &::-webkit-scrollbar {
        width: 0px; // 纵向滚动条的宽度
        background: rgba(213, 215, 220, 0.3);
        border: none;
    }
    // 滚动条轨道
    &::-webkit-scrollbar-track {
        border: none;
    }
}
// --------------------隐藏table gutter列和内容区右侧的空白 start
::v-deep .el-table th.gutter {
    display: none;
    width: 0
}
::v-deep .el-table colgroup col[name='gutter'] {
    display: none;
    width: 0;
}
// 这个样式不加的话内容哪里会缺一点,估计是因为滚动条哪里缺的没有补上
::v-deep .el-table__body {
    width: 100% !important;
}
// --------------------隐藏table gutter列和内容区右侧的空白 end

下面记录代码,亲测有效。

css 复制代码
<div class="leftTopEcharts1">
    <div class="alarm-table">
      <el-table :data="this.left1List1" style="width: 100%;" height="200" ref="table"
                @mouseenter.native="autoScroll(true)"
                @mouseleave.native="autoScroll">
        <el-table-column prop="typeName" label="告警类型" width="270" />
        <el-table-column prop="almEntCount" label="告警数" />
      </el-table>
    </div>
  </div>
css 复制代码
import { tableAutoScroll } from '@/utils/autoScroll'
mounted() {
    setTimeout(() => {
      // 想要滚动就必须设置表格高度,这里设置的高度是100%,即跟父元素等高
      this.tableHeight = "100%"
      this.infinitScroll()
    }, 500)
}

methods: {
 /** 表格自动滚动 */
    infinitScroll() {
      // 拿到表格挂载后的真实DOM
      const table = this.$refs.table;
      tableAutoScroll(table)
    },
}

autoScroll.js 工具类

css 复制代码
/** 表格自动滚动 */
export const tableAutoScroll = (table) => {
  // 拿到表格中承载数据的div元素
  const divData = table.bodyWrapper;
  divData.onmouseover = function () {
    clearInterval(t);
  }; //鼠标移入,停止滚动
  divData.onmouseout = function () {
    start();
  }; //鼠标移出,继续滚动

  // 拿到元素后,对元素进行定时增加距离顶部距离,实现滚动效果(此配置为每100毫秒移动1像素)
  let t;
  start();
  function start() {
    // 数据少于表格高度停止滚动
    if (divData.clientHeight >= divData.scrollHeight) {
      return;
    }
    t = setInterval(() => {
      // 元素自增距离顶部1像素
      divData.scrollTop += 1;
      // 判断元素是否滚动到底部(可视高度+距离顶部=整个高度)
      if ( divData.clientHeight + divData.scrollTop == divData.scrollHeight ) {
        // 重置table距离顶部距离
        divData.scrollTop = 0;
      }
    }, 100);
  }
}
css 复制代码
.leftTopEcharts1 {
  height: 100%;
  width: 100%;
  background-image: url('~@/assets/meilinScreen/qyscaqydjc/biankuang.png');
  background-size: cover;
  background-size: 100% 100%;
  box-sizing: border-box;
  overflow: hidden;
}
.alarm-table {
  padding-left: 5%;
  padding-top: 3%;
  padding-right: 3%;
}
/*去除滚动的滚动条*/
::v-deep .el-table th.gutter{
  display: none;
  width:0
}
::v-deep.el-table colgroup col[name='gutter']{
  display: none;
  width: 0;
}
::v-deep .el-table__body{
  width: 100% !important;
}
::v-deep .el-table--scrollable-y .el-table__body-wrapper {
  overflow-y: hidden;
}
/*去除滚动的滚动条*/
相关推荐
Tajang16 分钟前
推荐一个浏览器代理插件(Tajang Proxy),支持Chrome和Edge
前端·chrome·网络安全·渗透测试·靶场·edge
鹏多多20 分钟前
前端音频兼容解决:音频神器howler.js从基础到进阶完整使用指南
前端·javascript·音视频开发
龙仔CLL1 小时前
使用vue-pdf做本地预览pdf文件,通过垂直滚动条展示全部pdf内容,不展示分页按钮
前端·vue.js·pdf
前端架构师-老李1 小时前
12、electron专题(electron-builder)
前端·javascript·electron
IT_陈寒1 小时前
JavaScript性能飞跃:5个V8引擎优化技巧让你的代码提速300%
前端·人工智能·后端
艾小码1 小时前
这份超全JavaScript函数指南让你从小白变大神
前端·javascript
reembarkation2 小时前
vue 右键菜单的实现
前端·javascript·vue.js
00后程序员张4 小时前
Fiddler抓包工具使用教程,代理设置与调试方法实战解析(含配置技巧)
前端·测试工具·ios·小程序·fiddler·uni-app·webview
2301_768350239 小时前
Vue第二期:组件及组件化和组件的生命周期
前端·javascript·vue.js
小周同学:10 小时前
Vue项目中将界面转换为PDF并导出的实现方案
javascript·vue.js·pdf