naiveui的table实现可滚动的恒居中空数据处理

news/2024/11/24 4:10:22/

实现方式

~~
先放一个实现效果截图:
请添加图片描述
naive-ui table 实现空数据页面的滚动、暂无数据恒居中效果

问题详情: naive-ui的原逻辑时空数据页面只有居中的暂无数据字样,不支持横向滚动
解决方案: 既然自带的table不支持滚动,那就自己写空数据页面往里面插

  1. 首先将自己手写的空数据页面替换自带的页面(组件支持空数据插槽):
    在这里插入图片描述

  2. 其次由于表头有快20列,并且我们使用的时固定表头,拖动下方的滚动条无法同步表头的滚动。所以在空数据div的滚动事件中我们要做好处理
    获取表头的el之后将滚动事件target解析出来把scrollleft的值赋值上
    在这里插入图片描述

  3. 这样拖动空数据的滚动条表头也会同步滚动了,但是还差最后一步。需要将暂无数据文案或图标进行恒居中。所以我使用的是绝对定位来实现的
    在这里插入图片描述
    根据scrollbar进行left 移动50% 并减去 自身的50% 实现居中, 由于是绝对定位 所以无论滚动条如何滚动都可以实现暂无数据的居中效果了

实现代码

纯代码区域

      <n-data-tableremote:render-cell="renderCell":scroll-x="getTableWidth":columns="columns":data="data":pagination="pagination":max-height="getTableMaxHeight":loading="loadingRef"class="log-table-el"@update:page="handlePageChange"><template #empty><n-scrollbar x-scrollable @scroll="emptyScroll"><div :style="getEmptyTableTextPosition"><div :style="setTextPosition.value">暂无数据</div></div></n-scrollbar></template></n-data-table>
// 暂无数据文字样式,为了达到文字永远居中使用与scrollbar的定位
const emptyTextStyle = {lineHeight: '100px',height: '100px',width: '100px',position: 'absolute',left: '50%',transform: 'translate(-50%, 0)',
};const tableHeaderEl: any = reactive({value: {},
});const setTextPosition: any = reactive({value: {...emptyTextStyle,},
});onMounted(() => {tableHeaderEl.value = document.getElementsByClassName('n-data-table-base-table-header')[0];
});// naiveui不支持暂无数据宽表格滚动,所以监听空数据div滚动条事件
// 将事件的滚动条长度赋值给header则达到同步滚动的效果
const emptyScroll = (event: any) => {const { target } = event;tableHeaderEl.value.scrollLeft = target.scrollLeft;setTextPosition.value = {...emptyTextStyle,};
};

http://www.ppmy.cn/news/377515.html

相关文章

恒转矩和恒功率

关键公式&#xff1a;V kFQ V — 电压 F — 频率 Q — 磁通 &#xff08;Φ&#xff09; 关键公式&#xff1a;T kIQ T — 转矩 I — 母线电流 Q — 磁通 &#xff08;Φ&#xff09; 最后一段&#xff0c;弱磁调速。T 9550 P/N .P一定&#xff0c;N要大&#xff0c;所以T要…

latex的恒等于怎么写?

文章目录 latex的恒等于怎么写&#xff1f; latex的恒等于怎么写&#xff1f; \equiv ≡ \equiv ≡

智能恒等于推荐系统

在这里插入代码片如图所示 人类语言 和 聊天能力 以及各种行为都是推荐系统 推荐的结果 当某事发生人脑推荐系统就会给你推荐最佳的已知解决方案。 比如 你在和朋友聊天的时候就会通过&#xff0c;你的性格特点朋友的性格特点&#xff0c;人物关系当前情感状态 等一系列信息&a…

关于恒等于(===)和非恒等于(!==)

有人发了个getXXX()!0&#xff0c;不明白!是什么意思,一直也没看到过&#xff0c;问了一下,说是!非恒等于,还是不明白非怦等于是什么意思&#xff0c;百度了一下非恒等于&#xff0c;呵呵&#xff08;看来自己是真无知啊&#xff09; 引用 恒等于&#xff08;&#xff09;&…

恒电位仪电路

参考https://blog.csdn.net/y511374875/article/details/79090837 一个典型的恒压电路由三部分组成: 1. 如果需要&#xff0c;带有偏置电压的控制电路 2. 电流测量电路 3. 短路场效应晶体管&#xff0c;当电源断开时&#xff0c;工作电极与参考电极连接 电化学气体传感器为…

开源的「变」与「恒」:七大开源基金会负责人尖峰对谈

在 7 月 9 日举办的首届全球开源技术峰会 GOTC 2021 上海站&#xff0c;来自全球各顶级基金会的负责人共聚圆桌&#xff0c;围绕开源软件的历史与未来展开了深刻的探讨。 Linux 基金会执行董事 Jim Zemlin、Apache 软件基金会董事 Craig Russell、CNCF 云原生计算基金会总经理 …

如何理解交叉熵恒大于或等于0?

如何理解交叉熵恒大于或等于0&#xff1f; 看了很多博客&#xff0c;我发现它们都基本上是以一个定义的形式&#xff0c;直接告诉我们&#xff08;或者不提及&#xff09;交叉熵它是恒大于等于0的&#xff0c;没有解释为什么。 可参考的部分优质博客 如果想要了解什么是熵及…

得到“恒”标志

今天登录博客&#xff0c;发现多了一个“恒”标志&#xff0c;很高兴&#xff0c;为能够坚持写博客给了很大鼓励。