当前位置: 首页 > Web前端 > JavaScript

支持element-plus表格自动滚动

时间:2023-03-27 00:07:29 JavaScript

表格数据需要在项目中自动滚动。项目基于element-plus,方法如下:functionuseElTableScroll(dom,autoScrollFlag){constscrollTop=ref(0)//内容高度constscrollHeight=ref(0)//滚动区域constscrollConHeight=ref(0)//timerconsttimer=ref(null)//timerconsttimerout=ref(null)varrequestAnimationFrame=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame;varcancelAnimationFrame=window.cancelAnimationFrame||window.mozCancelAnimationFrame;//是否自动滚动constautoScroll=()=>{if(!auto??ScrollFlag){returnfalse}timerout.value=setTimeout(()=>{scrollConHeight.value=dom.value.$refs.bodyWrapper.clientHeightscrollHeight.value=dom.value.$refs.tableBody.clientHeightscrollStep()},3000)}//添加函数scrollStep(){scrollTop.value++if(scrollTop.value>scrollHeight.value-scrollConHeight.value&&scrollHeight.value>0){timerout.value&&clearTimeout(timerout.value)setTimeout(()=>{scrollTop.value=0dom.value.setScrollTop(scrollTop.value)autoScroll()},3000)}else{计时器.value=requestAnimationFrame(scrollStep)}dom.value.setScrollTop(scrollTop.value)}//清除滚动函数clearScroll(){timer.value&&cancelAnimationFrame(timer.value)timerout.value&&clearTimeout(timerout.value)}//鼠标进入functioncellMouseEnter(){clearScroll()}//鼠标移出functioncellMouseLeave(){scrollTop.value=dom.value.$el.querySelector(".el-scrollbar__wrap").scrollTopautoScroll()}return{autoScroll,clearScroll,cellMouseEnter,cellMouseLeave}}exportdefaultuseElTableScrollsetup中调使用如下:consttable=ref(null)const{autoScroll,clearScroll,cellMouseEnter,cellMouseLeave}=useElTableScroll(table,props.autoScroll)onMounted(()=>{autoScroll()})onUnmounted(()=>{clearScroll()})props.autoScroll是外部控制是否自动滚动