位置: IT常识 - 正文

Element UI 扩展tooltip 只在内容过长才显示(element插件安装方法)

发布时间:2024-01-23
Tooltip常用于展示鼠标 hover 时的提示信息。而在实际过程中,有这么一个需求:只有文字内容排不下,出现省略号,才需要显示tooltip的提示内容。本文章的思路是通过一个自定义指令实现如下效果:姓名字段过长时才显示tooltip ... 1. 介绍

推荐整理分享Element UI 扩展tooltip 只在内容过长才显示(element插件安装方法),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:elementui插件,elementui插件,element ui tooltip,elementui扩展组件,elementui扩展组件,element ui 插槽,element ui 插槽,element扩展组件,内容如对您有帮助,希望把文章链接给更多的朋友!

Tooltip常用于展示鼠标 hover 时的提示信息。

而在实际过程中,有这么一个需求:只有文字内容排不下,出现省略号,才需要显示tooltip的提示内容。

本文章的思路是通过一个自定义指令实现如下效果:姓名字段过长时才显示tooltip

2.element-ui(vue2版本)2.1 注册指令1)akTooltipAutoShow.jsElement UI 扩展tooltip 只在内容过长才显示(element插件安装方法)

说明:注册了一个名称为 'ak-tooltip-auto-show' 的指令。会根据内容进行判断是否展示tooltip。

import Vue from 'vue';import { on, off, getStyle } from 'element-ui/src/utils/dom';/*** ak-tooltip-auto-show* 当text没有被折叠时,不显示tooltip*/Vue.directive('ak-tooltip-auto-show', {inserted: function (el, binding, vnode) {el.addEventListener('mouseenter', function (e) {let defalutSilent = !!Vue.config.silent;Vue.config.silent = true;vnode.componentInstance.disabled = true;const range = document.createRange();range.setStart(el, 0);range.setEnd(el, el.childNodes.length);const rangeWidth = Math.round(range.getBoundingClientRect().width);const padding = (parseInt(getStyle(el, 'paddingLeft'), 10) || 0) + (parseInt(getStyle(el, 'paddingRight'), 10) || 0);if (rangeWidth + padding > el.offsetWidth || el.scrollWidth > el.offsetWidth) {vnode.componentInstance.disabled = false;}Vue.config.silent = defalutSilent;});}});2.2 使用

说明:使用<el-tooltip v-ak-tooltip-auto-show>包囊展示的内容。

<div class="details-inner__row"><span class="details-inner__row-name">姓名:</span><el-tooltip placement="top" effect="dark" :content="item.name" v-ak-tooltip-auto-show><span class="details-inner__row-value">{{item.name}}</span></el-tooltip></div>// css.details-inner__row-value {  width: 80%;  display: inline-block;  white-space: nowrap;  text-overflow: ellipsis;  overflow: hidden;}

  

3. element-plus(vue3版本)3.1 注册指令1)akTooltipAutoShow.js

说明:注册了一个名称为 'ak-tooltip-auto-show' 的指令。会根据内容进行判断是否展示tooltip。

注意:因为element-plus与之前的element-ui不一样,在element-plus(vue3版本)中是 <展示组件>包含<el-tooltip>的,所以代码中需要在<展示组件>内查找<el-tooltop>。

import { getStyle } from 'element-plus/lib/utils/dom/index';/*** show-overflow-tooltip for text* 当text没有被折叠时,不显示tooltip*/const akTooltipAutoShow = {created(el, binding, vnode) {let tooltipNode = vnode.children.find((childrenCmpt) => childrenCmpt.component?.type.name == 'ElTooltip');if (tooltipNode) {let { content } = tooltipNode.props;if (content && ['添加', '编辑', '删除','查看'].includes(content)) {el.addEventListener('click', function (e) {let defalutDisabled = tooltipNode.component.props.disabled;if (!defalutDisabled) {tooltipNode.component.props.disabled = true;setTimeout(() => {tooltipNode.component.props.disabled = defalutDisabled;}, 200);}});} else {el.addEventListener('mouseenter', (e) => {tooltipNode.component.props.disabled = true;const range = document.createRange();range.setStart(el, 0);range.setEnd(el, el.childNodes.length);const rangeWidth = Math.round(range.getBoundingClientRect().width);const padding = (parseInt(getStyle(el, 'paddingLeft'), 10) || 0) + (parseInt(getStyle(el, 'paddingRight'), 10) || 0);if (rangeWidth + padding > el.offsetWidth || el.scrollWidth > el.offsetWidth) {tooltipNode.component.props.disabled = false;}});}}}};export default akTooltipAutoShow;2) 进行局部或全局注册// main.jsconst app = createApp(App);import akTooltipAutoShow from './akTooltipAutoShow.js';app.directive('ak-tooltip-auto-show', akTooltipAutoShow);

  

3.2 使用

说明:因element-plus(vue3版本)本身不提供 root element,所以需要把此指令放到<el-tooltip>的父级组件。

<div class="details-inner__row">  <span class="details-inner__row-name">姓名:</span>  <span class="details-inner__row-value" v-ak-tooltip-auto-show>    <el-tooltip placement="top-end" :content="item.name">{{item.name}}</el-tooltip>  </span></div>// css.details-inner__row-value {  width: 80%;  display: inline-block;  white-space: nowrap;  text-overflow: ellipsis;  overflow: hidden;}

  

End Web开发之路系列文章 菜单加载中...
本文链接地址:https://www.jiuchutong.com/zhishi/304713.html 转载请保留说明!

上一篇:phpcms api怎么写接口(phpcms开发手册)

下一篇:phpcms v9怎么安装(phpcms v9官网)

  • 华为蓝牙耳机怎么连接苹果(华为蓝牙耳机怎么连接电脑)

    华为蓝牙耳机怎么连接苹果(华为蓝牙耳机怎么连接电脑)

  • 荣耀30pro的机身尺寸是多大(荣耀30pro的机身长宽是多少)

    荣耀30pro的机身尺寸是多大(荣耀30pro的机身长宽是多少)

  • 苹果手表5如何设置睡眠监测(苹果手表5如何省电)

    苹果手表5如何设置睡眠监测(苹果手表5如何省电)

  • 小米手机怎么设置闹钟(小米手机怎么设置流量上限?)

    小米手机怎么设置闹钟(小米手机怎么设置流量上限?)

  • 苹果只显示有效购买日期(iphone显示有效购买日期什么意思)

    苹果只显示有效购买日期(iphone显示有效购买日期什么意思)

  • 为什么xr发烫很严重(xr为什么发烫很严重)

    为什么xr发烫很严重(xr为什么发烫很严重)

  • 通话中怎么输入字母(在通话中怎么输入字母)

    通话中怎么输入字母(在通话中怎么输入字母)

  • 手机carrier是什么意思(苹果手机carrier是什么意思啊)

    手机carrier是什么意思(苹果手机carrier是什么意思啊)

  • 华为mate30pro微信视频没有美颜功能吗(华为mate30pro微信怎么分身)

    华为mate30pro微信视频没有美颜功能吗(华为mate30pro微信怎么分身)

  • 苹果朋友圈怎么发文字(苹果朋友圈怎么设置只可以看三天的)

    苹果朋友圈怎么发文字(苹果朋友圈怎么设置只可以看三天的)

  • cpe和无线路由器区别(cpe和无线路由器和无线终端)

    cpe和无线路由器区别(cpe和无线路由器和无线终端)

  • imessage信息是什么意思啊

    imessage信息是什么意思啊

  • 畅享10plus可以人脸识别吗(畅享10plus能开空调吗)

    畅享10plus可以人脸识别吗(畅享10plus能开空调吗)

  • 微信录屏怎么录(荣耀手机微信录屏怎么录)

    微信录屏怎么录(荣耀手机微信录屏怎么录)

  • 手机空调遥控器怎么安装(手机空调遥控器万能通用)

    手机空调遥控器怎么安装(手机空调遥控器万能通用)

  • 华为9x支持nfc功能吗(华为9xnfc功能在哪里打开)

    华为9x支持nfc功能吗(华为9xnfc功能在哪里打开)

  • 黑鲨2por支持无线充电吗(黑鲨2pro支持wifi6吗)

    黑鲨2por支持无线充电吗(黑鲨2pro支持wifi6吗)

  • 充电宝怎么看电满不满(充电宝怎么看电充满了没有)

    充电宝怎么看电满不满(充电宝怎么看电充满了没有)

  • 全角空格是英文状态还是中文状态(全角空格就是中文空格)

    全角空格是英文状态还是中文状态(全角空格就是中文空格)

  • 苹果平板怎么下载微信(苹果平板怎么下不了软件)

    苹果平板怎么下载微信(苹果平板怎么下不了软件)

  • 华为nova5pro耳机口在哪(华为nova5pro耳机模式怎么取消)

    华为nova5pro耳机口在哪(华为nova5pro耳机模式怎么取消)

  • u启动win10pe装机工具怎么装win10(u启动pe装机工具如何重装系统win10)

    u启动win10pe装机工具怎么装win10(u启动pe装机工具如何重装系统win10)

  • Win11上帝模式在哪? Win11开启上帝模式的三种方法(win10 上帝模式)

    Win11上帝模式在哪? Win11开启上帝模式的三种方法(win10 上帝模式)

  • 【人工智能大作业】A*和IDA*搜索算法解决十五数码(15-puzzle)问题 (Python实现)(启发式搜索)(人工智能示例)

    【人工智能大作业】A*和IDA*搜索算法解决十五数码(15-puzzle)问题 (Python实现)(启发式搜索)(人工智能示例)

  • 税控盘280怎么变398了
  • 公益性捐赠税前扣除资格有效期
  • 查询一般纳税人资格证明
  • 小规模企业开具普通发票月如何做账
  • 税控盘网上申请解锁
  • 销售额负数怎么报税
  • 增值税发票污染了能补开吗
  • 买一赠一视同销售征收增值税吗
  • 评估价值高于账面价值怎么收税
  • 应付票据保证金的会计分录怎么写
  • 租金收入摊销
  • 置换回房产怎么过户
  • 装修公司开发票需要客户承担税点吗?
  • 其他货币资金的概念
  • 不含税单价怎么换成含税单价
  • 暂估原材料已领用还红冲吗
  • 多计提的费用怎么调整
  • 到银行开公司账户需要多少手续费
  • 哪里查询发票是否抵扣
  • 白银及其制品出自哪里
  • 银行认购公司债券的条件
  • linux怎么开启远程
  • 税控盘不交服务费的后果
  • php -m
  • php汉字转拼音代码
  • php字符串变量
  • 销售商品售后回购
  • nmstt.exe - nmstt是什么进程 有什么用
  • 分公司收到总公司利润分录怎么写
  • 如何利用路由器登陆花生壳
  • 税收协定与国内税法发生冲突
  • 叶面积指数名词解释
  • js中数组方法有哪些
  • bert数据增强
  • 合并的命令
  • php array_fill
  • php新手入门教程
  • mysql5.7分区表
  • 华为mate主题
  • phpcms默认密码
  • 其他权益工具投资是什么意思
  • 增值税专票只有右上角有发票号码
  • python poetry如何创建项目
  • mongodb基础知识
  • 尾款忘记支付,交易关闭怎么办
  • 生产企业出口自产应税消费品实行什么方法
  • 账务处理相关内容
  • 股东向公司借款超过一年不还
  • 税额四舍五入的差额0.03怎么调整
  • 免税收入与不征收的区别
  • 其他应付款计入资产负债表哪个科目
  • 应付职工薪酬借方表示什么
  • 什么情况可以作为证人
  • 计入委托加工物资成本的消费税
  • 应交税金应交增值税
  • 核销应收帐款分录
  • 银行手续费在现金流量表怎么填
  • 当月作废的专票还是要交增值税吗
  • 电子发票是否使用
  • 小规模申请专票,税率是多少?
  • 公司收到赔偿款要交增值税吗
  • 新公司开户有几种类型
  • mssql in
  • mysql的基本操作语句
  • windows中双击硬盘驱动器图标操作的作用
  • linux vi命令详解菜鸟教学
  • windows的小技巧
  • Linux安装anaconda
  • po|iceofficer是什么意思
  • win8使用教程和技能
  • windows7怎么给电脑加密码
  • glimp使用方法
  • android.intent.extra.text
  • js中的?
  • javascript要怎么学
  • jquery取消单选框选中
  • 新疆油田在哪个地方
  • 杭州残保金2021年新政策申报时间
  • 进项税小于销项税
  • 长沙市税收排名
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号