Vue3中使用el-table遇到的问题

我在使用element-plus中el-table组件的时候,对于某一<el-table-column>标签内的内容设置show-overflow-tooltip属性,但这里溢出展示的tooltip的默认样式是无法像el-tooltip标签那样,直接可以修改的。默认的样式是这样:

因此,我尝试这样:

复制代码
<el-table-column property="name" :label="$t('Name')" 
min-width='40%' show-overflow-tooltip>
   <template #default="scope">
      <el-tooltip :content="scope.row.file_name" placement="bottom" offset="5" effect="light" :disabled="isShowFileName">
         <span class="name-line">
            {{ scope.row.file_name }}
         </span>
      </el-tooltip>
   </template>
</el-table-column>

但这样会导致同时展示两个tooltip,并且下面包裹在span标签外层的el-tooltip是会一直显示的,这里还需要写一个方法来判断当前是否溢出,这样逻辑就复杂了很多,至于如何判断,下面我会贴代码。这里我讲一下我对show-overflow-tooltip属性设置后样式的处理方法,使用官方文档中的:

注意这里这个属性是el-table的,不要写在<el-table-column>标签上,代码如下:

复制代码
<el-table-column property="name" :label="$t('Name')" 
min-width='40%' show-overflow-tooltip
:tooltip-options="{placement: 'bottom', effect: 'light', offset: -10}">
   <template #default="scope">
      <el-tooltip :content="scope.row.file_name" placement="bottom" offset="5" effect="light" :disabled="isShowFileName">
         <span class="name-line">
            {{ scope.row.file_name }}
         </span>
      </el-tooltip>
   </template>
</el-table-column>

实现效果如下:

上面提到如何判断当前文本是否溢出呢,我在需要判断的元素身上绑定了@mouseenter方法,然后编写代码如下(TS代码):

复制代码
<el-tooltip :content="file_name" placement="bottom" offset="10" effect="light" :disabled="isShowName">
   <span class="pre-info-title" @mouseenter="visibilityNameChange($event)">
      {{ file_name }}
   </span>
</el-tooltip>


function visibilityNameChange(event: any) {
    const ev = event.target
    const evWeight = ev.scrollWidth
    const contentWeight = ev.clientWidth
    if (evWeight > contentWeight) {
        // 实际宽度 > 可视宽度  文字溢出
        isShowName.value = false
    } else {
        // 否则为不溢出
        isShowName.value = true
    }
}

即可判断是否溢出~

相关推荐
mldong40 分钟前
一个 npm 包,九页审批中心:Vue3 项目接上工作流引擎
前端·javascript·vue.js
高级程序源9 小时前
django校园寻物通失物招领平台32261-计算机课程设计、毕业设计
vue.js·python·mysql·小程序·django·flask·课程设计
WeiXin_DZbishe9 小时前
基于springboot宠物领养系统-计算机毕设 附源码【课程设计】94217
vue.js·spring boot·python·django·php·课程设计
WeiXin_DZbishe11 小时前
基于springboot城市公交实时运营与调度系统-计算机毕设 附源码【课程设计】66173
java·vue.js·spring boot·后端·python·php·课程设计
WeiXin_DZbishe12 小时前
基于Springboot+AI的kuall音乐广场的设计与实现-计算机毕设 附源码【课程设计】12715
vue.js·人工智能·spring boot·后端·python·php·课程设计
_馒头12 小时前
pixiJs游戏开发实践 - 跳棋小游戏
javascript·vue.js
AIGC小尼13 小时前
毕设实战|SpringBoot+Vue 实现多个系统项目
vue.js·spring boot·课程设计
踩着两条虫16 小时前
我在浏览器里“盖”了一个村:Vue + Three.js 大屏开发踩坑记
前端·vue.js·three.js
mbshqqb16 小时前
TypeScript基础教程之同步生成器
前端·javascript·typescript
高级程序源18 小时前
SSM仓储管理系统31582-计算机课程设计、毕业设计
vue.js·python·mysql·小程序·flask·课程设计