赞
踩
el-table-column
自带属性show-overflow-tooltip
无法将特殊字符表现出来,并且鼠标移入show-overflow-tooltip
提示框内提示框并不会一直存在,另外在插槽中使用el-tooltip
组件时,会出现文字较少时,鼠标移入也出现了提示的问题。el-table-column
插槽解决了上述存在的问题并对相关代码进行了封装,方便多次调用;在数据内容过多时添加Y轴滚动轴,优化了滚动轴样式;el-table.vue
代码片段tooltip
,接收message
参数<el-table-column align="center" prop="address" label="地址">
<template slot-scope="scope">
<tooltip :message="scope.row.address"></tooltip>
</template>
</el-table-column>
tooltip.vue
代码分析<template> <div> <el-tooltip :disabled="isShowTooltip" class="tooltip" placement="top"> <pre class="tooltip__tip" slot="content">{{ messageWord }}</pre> <div class="tooltip__words" @mouseenter="enterEvents">{{ messageWord }}</div> </el-tooltip> </div> </template> <script> export default { data() { return { messageWord: '', isShowTooltip: false } }, props: { message: { required: true } }, mounted() { this.messageWord = this.message }, methods: { enterEvents(e) { let tableContentBoxWidth = e.target.getBoundingClientRect().width; let tableContentWidth = this.getElementTextWidth(e.target); if (tableContentWidth >= tableContentBoxWidth) { this.isShowTooltip = false; }else{ this.isShowTooltip = true } }, getElementTextWidth(el) { const range = new Range(); range.selectNodeContents(el); const width = range.getBoundingClientRect().width; return width } } } </script> <style lang="less" scoped> .tooltip__words { width: 100%; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .tooltip__tip { max-width: 500px; max-height: 300px; overflow-y: auto; white-space: pre-line; } .tooltip__tip::-webkit-scrollbar { width: 6px; // height: 10px; // 高度写不写,都不影响,因为会根据内容的长度自动计算 } .tooltip__tip::-webkit-scrollbar-thumb { background: #ccc; // 滑块颜色 border-radius: 3px; // 滑块圆角 } .tooltip__tip::-webkit-scrollbar-thumb:hover { background: #fff; // 鼠标移入滑块颜色 } .tooltip__tip::-webkit-scrollbar-track { border-radius: 3px; // 轨道圆角 background-color: #888 // 轨道颜色 ; } </style>
el-tooltip
是否禁用原理:获取内容盒子
宽度和盒子内容
宽度,比较两个值来控制是否禁用 el-tooltip
.enterEvents
函数:
isShowTooltip
控制el-tooltip
组件是否禁用;e.target.getBoundingClientRect().width
获取内容盒子
的具体宽度getElementTextWidth
函数:
盒子内容
的宽度;new Range
,性能更高一点;小伙伴们也可以通过创建一个标签来获取宽度也可以得到盒子内容的宽度;el-table.vue
完整代码<template> <div> <template> <el-table border :data="tableData" style="width: 100%"> <el-table-column align="center" prop="date" label="日期" width="180"> </el-table-column> <el-table-column align="center" prop="name" label="姓名" width="180"> </el-table-column> <el-table-column align="center" prop="address" label="地址"> <template slot-scope="scope"> <tooltip :message="scope.row.address"></tooltip> </template> </el-table-column> </el-table> </template> </div> </template> <script> import tooltip from "@/components/BMW/tableTooltip/tooltip.vue" export default { data() { return { tableData: [ { date: '2023-08-10', name: '王小虎', address: '上海市普陀区金沙江路 1518 弄,上海市普陀区金沙江路 1518 弄' }, { date: '2023-08-10', name: '王小虎', address: '上海市普陀区金沙江路 1518 弄,上海市普陀区金沙江路 1518 弄\n--------上海市普陀区金沙江路 1518 弄\n--------上海市普陀区金沙江路 1518 弄\n----- 上海市普陀区金沙江路 1518 弄\n-----上海市普陀区金沙江路 1518 弄上海市普陀区金沙江路 1518 弄上海市普陀区金沙江路 1518 弄上海市普陀区金沙江路 1518 弄,上海市普陀区金沙江路 1518 弄\n-----上海市普陀区金沙江路 1518 弄\n-----上海市普陀区金沙江路 1518 弄\n 上海市普陀区金沙江路 1518 弄\n上海市普陀区金沙江路 1518 弄上海市普陀区金沙江路 1518 弄上海市普陀区金沙江路 1518 弄上海市普陀区金沙江路 1518 弄,上海市普陀区金沙江路 1518 弄\n上海市普陀区金沙江路 1518 弄\n上海市普陀区金沙江路 1518 弄\n 上海市普陀区金沙江路 1518 弄\n上海市普陀区金沙江路 1518 弄上海市普陀区金沙江路 1518 弄上海市普陀区金沙江路 1518 弄上海市普陀区金沙江路 1518 弄,上海市普陀区金沙江路 1518 弄\n上海市普陀区金沙江路 1518 弄\n上海市普陀区金沙江路 1518 弄\n 上海市普陀区金沙江路 1518 弄\n上海市普陀区金沙江路 1518 弄上海市普陀区金沙江路 1518 弄上海市普陀区金沙江路 1518 弄上海市普陀区金沙江路 1518 弄,上海市普陀区金沙江路 1518 弄\n上海市普陀区金沙江路 1518 弄\n上海市普陀区金沙江路 1518 弄\n 上海市普陀区金沙江路 1518 弄\n上海市普陀区金沙江路 1518 弄上海市普陀区金沙江路 1518 弄上海市普陀区金沙江路 1518 弄上海市普陀区金沙江路 1518 弄,上海市普陀区金沙江路 1518 弄\n上海市普陀区金沙江路 1518 弄\n上海市普陀区金沙江路 1518 弄\n 上海市普陀区金沙江路 1518 弄\n上海市普陀区金沙江路 1518 弄上海市普陀区金沙江路 1518 弄上海市普陀区金沙江路 1518 弄上海市普陀区金沙江路 1518 弄,上海市普陀区金沙江路 1518 弄\n上海市普陀区金沙江路 1518 弄\n上海市普陀区金沙江路 1518 弄\n 上海市普陀区金沙江路 1518 弄\n上海市普陀区金沙江路 1518 弄上海市普陀区金沙江路 1518 弄上海市普陀区金沙江路 1518 弄上海市普陀区金沙江路 1518 弄,上海市普陀区金沙江路 1518 弄\n上海市普陀区金沙江路 1518 弄\n上海市普陀区金沙江路 1518 弄\n 上海市普陀区金沙江路 1518 弄\n上海市普陀区金沙江路 1518 弄上海市普陀区金沙江路 1518 弄上海市普陀区金沙江路 1518 弄上海市普陀区金沙江路 1518 弄,上海市普陀区金沙江路 1518 弄\n上海市普陀区金沙江路 1518 弄\n上海市普陀区金沙江路 1518 弄\n 上海市普陀区金沙江路 1518 弄\n上海市普陀区金沙江路 1518 弄上海市普陀区金沙江路 1518 弄上海市普陀区金沙江路 1518 弄' }, { date: '2023-08-10', name: '王小虎', address: '上海市普陀区金沙江路 1518 弄,上海市普陀区金沙江路 1518 弄\n上海市普陀区金沙江路 1518 弄\n上海市普陀区金沙江路 1518 弄\n' }, { date: '2023-08-10', name: '王小虎', address: '上海市普陀区金沙江路 1518 弄,上海市普陀区金沙江路 1518 弄\n上海市普陀区金沙江路 1518 弄\n上海市普陀区金沙江路 1518 弄\n 上海市普陀区金沙江路 1518 弄\n上海市普陀区金沙江路 1518 弄上海市普陀区金沙江路 1518 弄上海市普陀区金沙江路 1518 弄上海市普陀区金沙江路 1518 弄,上海市普陀区金沙江路 1518 弄\n上海市普陀区金沙江路 1518 ' }, ] } }, components: { tooltip }, } </script> <style lang="less" scoped> </style>
效果一
效果二
效果三
如果有所帮助,希望能够点赞收藏哦,非常感谢!!!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。