位置: IT常识 - 正文

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

编辑:rootadmin
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官网)

  • 企业卖车交税怎么算的
  • 增值税纳税申报表电子版在哪下载
  • 小微企业开专票税率是1%还是3%
  • 材料出入库制度
  • 车船税放在哪个科目核算
  • 结售汇有金额限制吗
  • 退回的附加税能退回来吗
  • 退税发票误勾选怎么撤销
  • 工程施工的借方和贷方
  • 个人所得税定期定额起征点
  • 增值税留抵税额计入什么科目
  • 国库存款利息收入计入哪个预算收入科目
  • 清包工一般纳税人简易计税能开专票
  • 本月进项税额不够抵扣怎么办
  • 拆迁房视同销售成本可以抵减吗?
  • 租客一次性支付一年租金需要交个税吗
  • 补记以前年度往来款
  • 堤围工程
  • 国家税务局定额发票验证
  • 总分机构账务处理
  • 哪些出口业务不能做
  • 公司账上的存货是怎么来的
  • 小规模企业增值税账务处理
  • 成本费用票少了怎么办
  • 收购报废车有利润吗
  • 鸿蒙系统怎么设置导航键
  • 在win10系统中,如何限制孩子玩原神游戏
  • 酒店安装监控费用谁出
  • 其他债权投资有哪些明细科目
  • 一个完整的php文件由哪些元素组成
  • 64位windows系统下安装Memcache缓存
  • php教程 ftp 函数
  • 进度条js代码
  • PHP:imagecreatefromwebp()的用法_GD库图像处理函数
  • php框架开发教程
  • php生成颜色面板
  • java如何实现异步处理
  • 建设项目罚款支出的会计处理
  • 手把手教你如何从一无所有到财务自由
  • linux调试工具有哪些
  • lspci命令显示
  • sed命令大全
  • 企业的生产成本包括哪些
  • 关联企业之间业务往来如何定价
  • 帝国cms怎么调用文章随机段落
  • mongodb进阶与实战下载
  • 企业的净利润率
  • 费用减少利润减少的情况
  • 非同一控制下的长期股权投资入账价值
  • 交易性金融资产的账务处理
  • 合伙企业需要做工商吗
  • 银行存款产生的利息收入
  • 制造费用一定要摊销吗
  • 对公账户的钱怎么用
  • 弱电工程怎么入账
  • 建筑公司挂靠单位的财务处理是?
  • 公司车辆做账交增值税吗
  • 增值税发票税控开票软件用户密码
  • ubuntu 16.04.6安装教程
  • 如何进入opencore引导
  • DxO Optics Pro 9 激活破解安装详细图文教程
  • xp系统如何禁止开机启动软件
  • linux系统怎么快速查找文件
  • quick cocos2dx lua 网络图片 下载
  • python必学的os模块详解
  • javascript事件委托的用法及其好处简析
  • js选择框全选
  • 编写程序实现将两个文本文件的内容合并
  • angular jsx
  • nodejs基础知识
  • android4.4.2升级包
  • 获取标签的属性值的方式
  • js实例教程
  • jquery选择器大全
  • js下拉菜单的制作方法
  • 安徽税务发票查询入口
  • 税务局有哪些职务名称
  • 小程序河南税务局
  • 收到12366的短信
  • 江西税务客服电话
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设