Vue ElementUI中 table单元格使用多个Popover解决多行溢出隐藏鼠标悬浮提示问题
Popover的简单介绍
trigger属性用于设置何时触发 Popover,支持四种触发方式:hover,click,focus 和 manual。
对于触发 Popover 的元素,有两种写法:使用 slot=“reference” 的具名插槽,或使用自定义指令v-popover指向 Popover 的索引ref。
placement 弹框的出现位置
value / v-model 状态是否可见
hide/show 关闭/显示时触发的事件
table单元格嵌套Popover,@mouseenter @mouseleave 控制scope._self.$refs内的doShow()和doClose方法控制Popover显示隐藏
直接上代码
<el-table :data="tableData_jobList" @sort-change="sortChange" empty-text="正在努力加载数据中,请稍后……" :header-cell-style="{background:'#f9f9f9'}" style="width: 100%"> <el-table-column prop="title" label="任务标题" min-width="20%"> <template slot-scope="scope"> <div class="scope_row"> <el-popover :ref="'popover-title'+scope.$index" trigger="manual" :content="scope.row.title" placement="right" popper-class="black"> <div @mouseenter="visibilityChange($event,scope,'title')" @mouseleave="visibilityClose(scope,'title')" class="text" slot="reference">{{scope.row.title}}</div> </el-popover> </div> </template> </el-table-column> <el-table-column prop="gradeName" label="班级" min-width="10%"> <template slot-scope="scope"> <el-popover :ref="'popover-gradeName'+scope.$index" trigger="manual" :content="scope.row.gradeName" placement="right" popper-class="black"> <div @mouseenter="visibilityChange($event,scope,'gradeName')" @mouseleave="visibilityClose(scope,'gradeName')" class="text" slot="reference">{{scope.row.gradeName}}</div> </el-popover> </template> </el-table-column> <el-table-column prop="paperName" label="试卷" min-width="15%"> <template slot-scope="scope"> <el-popover :ref="'popover-paperName'+scope.$index" trigger="manual" :content="scope.row.gradeName" placement="right" popper-class="black"> <div @mouseenter="visibilityChange($event,scope,'paperName')" @mouseleave="visibilityClose(scope,'paperName')" @click="clickPaper(scope.row.paperId,scope.row.systemtype)" slot="reference" class="main_blue text" style="cursor: pointer">{{scope.row.paperName}}</div> </el-popover> </template> </el-table-column> </el-table>
methods:{
//因为一行用到了多个Popover所以ref需要加name区分 visibilityClose(scope,name){ scope._self.$refs["popover-"+name+scope.$index].doClose() }, visibilityChange(event,scope,name){ const ev = event.target; //获取div if(ev.scrollHeight>ev.clientHeight){ scope._self.$refs["popover-"+name+scope.$index].doShow() }else{ scope._self.$refs["popover-"+name+scope.$index].doClose() } }, }
获取dom根据scrollHeight和clientHeight 判断是否多行溢出隐藏
本文作者:seven&night
本文链接:https://www.cnblogs.com/bisiyuan/p/17408545.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
2022-05-17 el-input只能输入数字和小数
2022-05-17 element-ui中rules使用正则验证、表单验证