vue3 封装一个Tooltip 文字提示组件

效果图

 默认展示icon图标,悬浮展示文字

如果slot有内容则展示对应内容 

  

实现

用的是El-Tooltip组件

Element - The world's most popular Vue UI framework

组件代码

<script setup lang="ts">
import { Icon } from '@/components/Icon'
import { ElTooltip } from 'element-plus'
import { PropType } from 'vue'type Position =| 'top'| 'top-start'| 'top-end'| 'bottom'| 'bottom-start'| 'bottom-end'| 'left'| 'left-start'| 'left-end'| 'right'| 'right-start'| 'right-end'defineProps({title: {type: String,default: () => ''},// 针对kb表格提示isKbTable: {type: Boolean,default: false},mtop: {type: [Number, String],default: () => 0},ml: {type: [Number, String],default: () => 10},location: {type: String as () => Position,default: () => 'top'},disabled: {type: Boolean,default: () => false},visible: {type: Boolean as PropType<Nullable<boolean>>,default: () => null},effect: {type: String as PropType<'dark' | 'light' | 'customized'>,default: () => 'customized'}
})
</script>
<template><ElTooltipclass="box-item":effect="effect":content="title":placement="location":disabled="disabled":visible="visible"raw-content:popper-class="`vn-tooltip ${isKbTable ? 'vn-tooltip--kbTable' : ''} ${effect === 'light' ? 'vn-tooltip--light' : ''}`"><div:class="{ 'inline-block': !$slots.default }":style="{ marginTop: `${mtop}px`, marginLeft: `${!$slots.default ? ml : 0}px` }"><Icon class="tooltip-icon" v-if="!$slots.default" icon="svg-icon:v2-query" :size="20" /><slot></slot></div></ElTooltip>
</template><style lang="less">
.vn-tooltip--default-box {display: flex;align-items: center;justify-content: center;
}.inline-block {display: inline-block;
}.tooltip-icon {pointer-events: none !important;cursor: pointer;
}/* 自定义背景样式 */
.el-popper.is-customized {padding: 6px 12px;background: #2f3b53;
}.el-popper.is-customized .el-popper__arrow::before {right: 0;background: #2f3b53;border-radius: 3px 0;
}.vn-tooltip {z-index: 9999999 !important;max-width: 300px !important;font-family: Arial-Regular, Arial, serif;font-size: 12px !important;font-weight: 400;line-height: 16px;color: white !important;border-radius: 8px !important;
}.vn-tooltip--kbTable {bottom: -25px !important;
}.vn-tooltip--light {color: #000000 !important;
}
</style>

使用方法

//展示默认的提示图标
<Tooltip :title="t('agentConsole.preferences.globalAskDesc')" />
//带有内容
<Tooltip :title="t(item.title)" location="right" effect="light"><div>//内容</div>
</Tooltip>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/607147.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux set命令教程:如何优雅地设置和取消shell变量和选项(附实例详解和注意事项)

Linux set命令介绍 set命令是Linux操作系统中的内置shell命令&#xff0c;用于设置和取消shell变量和选项。它常用于shell脚本中&#xff0c;以配置环境并控制脚本的行为。 Linux set命令适用的Linux版本 set命令在所有主流的Linux发行版中都可以使用&#xff0c;包括但不限…

【Leetcode】238.除自身以外数组的乘积

一、题目 1、题目描述 给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O(n) 时间复杂度内完成…

超维空间M1无人机使用说明书——21、基于opencv的人脸识别

引言&#xff1a;M1型号无人机不仅提供了yolo进行物体识别&#xff0c;也增加了基于opencv的人脸识别功能包&#xff0c;仅需要启动摄像头和识别节点即可 链接: 源码链接 一、一键启动摄像头和人脸识别节点 roslaunch robot_bringup bringup_face_detect.launch无报错&#…

Java解决动态口令问题

Java解决动态口令问题 01 题目 某公司门禁密码使用动态口令技术。初始密码为字符串 password&#xff0c;密码更新均遵循以下步骤&#xff1a; 设定一个正整数目标值 target将 password 前 target 个字符按原顺序移动至字符串末尾 请返回更新后的密码字符串。 示例 1&…

Django配置日志系统的最佳实践

概要 日志是跟踪应用行为、监控错误、性能分析和安全审计的重要工具。在Django框架中&#xff0c;合理配置日志系统可以帮助开发者有效管理项目运行过程中的关键信息。本文将详细介绍Django日志系统的最佳实践。 日志系统概述 Django使用Python的 logging 模块来实现日志系统…

掌握Lazada API接口:开启电商开发新篇章,引领业务增长潮流

一、概述 Lazada API接口是Lazada平台提供的软件开发工具包&#xff0c;它允许第三方开发者通过编程方式访问Lazada平台上的商品、订单、用户等数据&#xff0c;并执行相关操作。通过使用Lazada API接口&#xff0c;开发者可以快速构建与Lazada平台集成的应用程序&#xff0c;…

WPF 基础入门(资源字典)

资源字典 每个Resources属性存储着一个资源字典集合。如果希望在多个项目之间共享资源的话&#xff0c;就可以创建一个资源字典。资源字段是一个简单的XAML文档&#xff0c;该文档就是用于存储资源的&#xff0c;可以通过右键项目->添加资源字典的方式来添加一个资源字典文件…

【设计模式】一文理解记住设计模式的原则

目录——阅读所需预计5-10分钟 &#x1f396;️前言&#x1f3af;单一职责原则&#x1f4e3;1. 定义&#x1f49e;2. 定义很抽象&#xff0c;咱继续看&#x1f389;3. 举几个栗子&#x1f49e;4. 以上栗子出现了一个问题&#xff0c;单一职责的划分究竟可以分多细&#x1f449;…

架构设计 识识别复杂度

文章目录 识别复杂度识别复杂度实战 架构设计的本质目的是为了解决软件系统的复杂性&#xff0c;所以在我们设计架构时&#xff0c;首先就要分析系统的复杂性。只有正确分析出了系统的复杂性&#xff0c;后续的架构设计方案才不会偏离方向&#xff1b;否则&#xff0c;如果对系…

【花艺电商】SpringBoot集成MyBatis-Plus、Swagger2、SpringSecurity、OAuth2等技术整合开发

目录 一、功能介绍 1. 说明 2. 功能实现 3. 技术应用 二、技术详述 1.MyBatis-Plus 主要体现 项目应用 2.SpringSecurity 应用作用 三、页面展示 1. 登入 2. 主页 3. 详情 4. 购物车 5. 订单 6. 沙箱支付 每篇一获 一、功能介绍 1. 说明 这个项目主要使用了…

文本分析之词云图的绘制

文本分析的词云图是一种可视化方式&#xff0c;用于展示文本中出现频率较高的词汇。词云图通常以词汇的出现频率为基础&#xff0c;将频率较高的词汇在图中显示为较大的字体&#xff0c;频率较低的词汇则以较小的字体显示。通过词云图&#xff0c;可以直观地了解文本的关键词和…

计算机网络试题——填空题(附答案)

在OSI模型中&#xff0c;第一层是____________层。 答案&#xff1a;物理&#xff08;Physical&#xff09; TCP协议是一种_____________连接的协议。 答案&#xff1a;面向连接&#xff08;Connection-oriented&#xff09; IPv6地址的位数是____________。 答案&#xff1a;1…

算法训练day8Leetcode344反转字符串541反转字符串II54替换数字151反转字符串单词55右旋字符串

今日学习的文章和视频链接 https://programmercarl.com/0344.%E5%8F%8D%E8%BD%AC%E5%AD%97%E7%AC%A6%E4%B8%B2.html#%E6%80%9D%E8%B7%AF https://programmercarl.com/kama55.%E5%8F%B3%E6%97%8B%E5%AD%97%E7%AC%A6%E4%B8%B2.html#%E6%80%9D%E8%B7%AF 344 反转字符串 题目描…

基于SSM的校园线上订餐系统设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;vue\html 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#xff1a;是…

Linux中yum命令工作原理

yum的工作原理 解决了rpm安装时的依赖关系,底层还是rpm安装 在生产环境下,非必要,建议不要卸载软件包,尤其是不熟悉的软件包,因为在redhat 8之后卸载软件包会直接解除依赖关系(底层没有使用到的依赖包会直接被卸载),有的底层的依赖包像openssl,不止一个软件包所依赖,一旦被卸载…

OpenHarmony基于HDF简单驱动开发实例

背景 OpenHarmony-3.0-LTSqemu_small_system_demoliteos_aqemu 添加配置 device/qemu/arm_virt/liteos_a/hdf_config/device_info/device_info.hcs device_info 新增&#xff1a; sample_host :: host {hostName "sample_host";sample_device :: device {devic…

ASP.NET中小型超市管理系统源码

ASP.NET中小型超市管理系统源码 超市管理系统是专门为中小型超市打造的管理系统&#xff0c;可以方便管理时更加准确清晰的查看商品信息&#xff0c; 仓库出售与进货的信息&#xff0c;还有每一个部门员工的信息&#xff0c;也更加直观的体现出每一阶段的商品销售情况&#xf…

【VUE】无法加载文件 \node\vue.ps1,因为在此系统上禁止运行脚本。问题解决

问题描述 在VS Code中输入vue create -p dcloudio/uni-preset-vue uniapp-demo命令时报错 无法加载文件 D:\address\node\vue.ps1&#xff0c;因为在此系统上禁止运行脚本。有关详细信息&#xff0c;请参阅 https:/go.microsoft.com/fwlink/?LinkID135170 中的 about_Executi…

(aiohttp-asyncio-FFmpeg-Docker-SRS)实现异步摄像头转码服务器

1. 背景介绍 在先前的博客文章中&#xff0c;我们已经搭建了一个基于SRS的流媒体服务器。现在&#xff0c;我们希望通过Web接口来控制这个服务器的行为&#xff0c;特别是对于正在进行的 RTSP 转码任务的管理。这将使我们能够在不停止整个服务器的情况下&#xff0c;动态地启动…

UE5 使用动画模板创建多个动画蓝图

我们制作游戏的时候&#xff0c;角色会根据不同的武器表现出来不同的攻击动画&#xff0c;待机动画以及移动动画。如果我们在UE里面实现这个需求&#xff0c;是通过复制粘贴的方式修改&#xff0c;还是有更好的方式。 这里就需要介绍一下动画模板&#xff0c;我们可以将动画蓝图…