Element ui plus 中 table scroll 自动触底

Element ui plus 中 table scroll 自动触底

场景:添加客户等级的时候,新增的客户等级 input 框 被 scroll 遮挡、重叠,需要保证 scroll 保持在 最底部接可以解决 遮挡、重叠。

el-table 在设置了 height 后,会选择将 table 表头固定

jsx 复制代码
<el-table :height="tableData.length*40+50>tableHeight?tableHeight:tableData.length*40+50" :data="tableData"
              style="width: 100%;"
              ref="TableRef"
              :cell-style="{ textAlign: 'center' }"
              v-loading="loading"
              :header-cell-style="{ 'text-align': 'center',background: '#f9f9f9', color: 'black',padding:'16px 0px'}"
    >
//table 中的其他内容
</el-table>

获取table内部的 scroll dom 然后并重新赋值

jsx 复制代码
const TableRef = ref()

function scrollBehavior(e) {
  const dom = TableRef.value.$refs.bodyWrapper.getElementsByClassName('el-scrollbar__wrap')[0]
 // 父容器高度 + 子容器距离父容器顶端的高度 = 子容器可滚动的高度
  const {clientHeight, scrollTop, scrollHeight} = dom
  if (clientHeight + scrollTop !== scrollHeight) {
    dom.scrollTop = dom.scrollHeight
  }
}

scrollBehavior 方法就是将 scroll 滚动到底部,选择执行的时间即可;我这里是在添加客户等级的时候进行执行的。

jsx 复制代码
const addNewTableItem = () => {
  if (isAdd.value) {
    ElMessage.warning(i18n.global.t('common.cds49'))
    return
  }
  isAdd.value = true;
  isEdit = true;
  tableData.value.push({
    name: "",
    age: 0,
    address: "",
    editing: true,
  });
  //操作真实dom
  nextTick(() => {
    scrollBehavior()
  })
};

然后就解决了👌

相关推荐
程序员黑豆8 分钟前
鸿蒙应用开发:AppStorage 全局状态存储用法教程
前端·harmonyos
猫猫不是喵喵.16 分钟前
Vue3 中 computed 计算属性与 watch、watchEffect 监听
前端·javascript·vue.js
En^_^Joy28 分钟前
Vue项目创建与入口配置全攻略
前端·vue.js·arcgis
爱码小白1 小时前
importlib模块
开发语言·前端·python
猫猫不是喵喵.1 小时前
Vue2 的 Vuex 状态管理与 Vue3 的 Pinia 状态管理
前端·javascript·vue.js
greenbbLV1 小时前
中小公司积分商城选型:SaaS与私有化方案对比解析
大数据·前端·小程序
NutShell Wang3 小时前
Vite 8.1 深度拆解:Rolldown 统一打包器如何终结前端构建的「双引擎时代」
前端·rust·开源·vite·开发者工具·vibe coding
朱容zr3331333 小时前
请解释“回表”的概念。
java·前端·数据库
leslie1183 小时前
webpack笔记
前端·webpack
宁风NF3 小时前
JavaScript:内存、垃圾回收、性能优化
开发语言·前端·javascript·学习·性能优化·es6