el-table暂无数据居中,不随滚动条滚动

前言:最近做项目遇到一个问题,表头过长产生的横向滚动条,暂无数据会随滚动条而滚动,从效果上非常不好。其次是客户希望定制属于自己风格的暂无数据页面。
分析:
(1)table自带的暂无数据外层包了两层div,宽度是实际长度,若强行更改,横向滚动条会消失
(2)若在table外面声明一个暂无数据的div,通过定位来实现此功能,可能会无法适当撑开table的高度
(3)因此选择动态添加一个自己定义的模块,通过修改其样式达到目的
解决方案:
CommonTableNodData(tableData,height){
let top=getPercent((height-document.getElementsByClassName('el-table__header')[0].offsetHeight-120)/2+document.getElementsByClassName('el-table__header')[0].offsetHeight,300,true);
let yy = +require("../../../assets/images/nodata.png")+>
let div2 = document.createElement("div");
div2.setAttribute('style', 'text-align: center;height: 120px;');
div2.className = 'no-data-big showtip';
div2.innerHTML = yy;
if(tableData.length==0 ) {
if(document.getElementsByClassName('showtip').length){
document.getElementsByClassName('el-table__header-wrapper')
[0].removeChild(document.getElementsByClassName('showtip')[0]);
}
document.getElementsByClassName('el-table__header-wrapper')[0].appendChild(div2);
}else if(document.getElementsByClassName('showtip').length){
document.getElementsByClassName('el-table__header-wrapper')
[0].removeChild(document.getElementsByClassName('showtip')[0]);
}
} ;
使用方法:
(1)使用的table添加全局class='no-table-center',隐藏原有的暂无数据
(2)引用此文件中的CommonTableNodData方法
(3)在自己的页面中监听tableData(表格数据)的变化
watch:{
tableData : {
handler(val) {
CommonTableNodData(val,300);
}
}
},
height:表格高度,若有高度,传进去,无默认为30%(用于保证垂直居中)

你可能感兴趣的:(el-table暂无数据居中,不随滚动条滚动)