位置: 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官网)

  • 环境保护税的纳税期限
  • 金税四期的到来意味着什么
  • 员工工资计入管理费用吗
  • 小规模企业每月能开多少专票
  • 如何查询对方是不是一般纳税人
  • 软件和硬件可以用什么代名词
  • 营改增后企业所得税怎么算
  • 财产保险合同印花税计税依据
  • 记账凭证包括哪些种类
  • 现金池 印花税
  • 资金账簿印花税减半征收是从什么时候开始的
  • 减免货款需要进项税额转出吗
  • 摊销费用怎么计提
  • 政府补助的失业金发放准时吗
  • 加油站销售加油卡是否征收增值税
  • 年末会计做账怎样少交企业所得税呢?
  • 增值税普通发票需要交税吗
  • 预付款可以开专票吗
  • 预缴所得税如何做账
  • 申报截止日期前还能用吗
  • 增值税专票的收款人必须是个人嘛
  • 花生油 增值税
  • 小规模纳税人增值税超过30万怎么纳税
  • 建筑工程预收款预缴增值税的时间
  • 企业做账会计需要什么资质
  • 库存商品结转成本摘要怎么写
  • 粮食购销企业
  • 出口退税的钱退到哪里了
  • 本月无收入怎样申报?
  • 期末留抵税额退税额
  • 企业应纳所得税计算公式
  • 单位未足额缴纳社保可以补交几年
  • 取得增值税发票的认证期限是多久?
  • laravel视频教程
  • 在清算土地增值税销项时,允许扣除的土地价款包括哪些?
  • 一般纳税人能开1%的发票吗
  • php获取get请求数据
  • 发票复核和收款人未填写
  • 自动驾驶科普
  • 保理属于什么行业分类
  • 房地产开发企业的了解概述
  • 达到规定数量赠送实物,如何开票
  • 所得税申报资产总额平均值
  • php调用变量
  • 经营出租固定资产折旧费计入什么科目
  • 房地产公司活动方案
  • 所得税调增调减技巧
  • 国库券利息收入属于企业所得税纳税调整项目
  • 退休人员基本养老金包括哪些
  • 抵押贷款的评估费会计分录
  • 车辆上牌的费用应付多少?
  • 银行贷款信用贷
  • 工程款开票数量和单价要填吗
  • 印花税税率是多少
  • 考试报名费都去哪了
  • 半成品仓库的管理办法
  • 小规模纳税人劳务派遣差额征税税率
  • 公司股权变更所需资金
  • 进项税额有抵扣期限吗
  • Windows下mysql5.7.18安装配置教程
  • mysql多表查询方式
  • asp.net select
  • win8系统怎样安装
  • WINDOWS操作系统内置的GUEST
  • win8系统本地连接在哪
  • ubuntu服务器安装matlab2014a环境配置
  • 苹果电脑怎么切换系统
  • win7电脑网络慢怎么提升
  • window10 系统安装
  • gage blocks是什么意思
  • opengl 2
  • jquery validation
  • 批处理命令在windows操作中的典型应用
  • js数组entries
  • jquery动态改变样式
  • 什么是双创服务平台
  • 保险发票不包含哪些
  • 刚成立小公司的流程
  • 城镇土地使用税优惠政策
  • 湖南自然人电子税务局官网
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设