iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >vue3超出文本展示eltooltip实现示例
  • 281
分享到

vue3超出文本展示eltooltip实现示例

vue超出文本展示eltooltipvueeltooltip 2023-02-27 11:02:05 281人浏览 安东尼
摘要

目录实现思路1. 创建一个自定义指令文件showTip.js。该文件放在directives文件夹下。内容如下:2. 全局引入3. 组件中使用总结实现思路 最近在做项目的时候遇到一

实现思路

最近在做项目的时候遇到一个样式,文本超出某个宽度的时候需要展示...,鼠标移上去展示提示信息,如果过没有超出宽度则不展示提示框。这篇文章主要就是介绍如何实现的。

首先我们分析一下要根据文本的宽度是否超过展示提示框,那么就必须要获取文本的宽度和容器的宽度,然后还要根据el-tooltip的disabled属性来判断是否需要展示tool-tip。我们可以通过自定义一个指令来是实现。大致思路如下:

  • 获取容器的宽度,获取文本的宽度。
  • 判断宽度,并且监听mouseenter事件,如果文本的宽度>容器的宽度, 就将tool-tip的disabled的属性设置为false,否则就设置为true

特别注意:

  • vue3中,我们不能将指定绑定在el-tooltip上,而是需要绑定在el-tooltip的外层容器上。因此在获取元素的时候就需要在外层容器上内查找el-tooltop。
  • 在计算元素的宽度的时候还要考虑左右的padding的大小

代码实现

1. 创建一个自定义指令文件showTip.js。

该文件放在directives文件夹下。内容如下:

import { getStyle } from 'element-plus/lib/utils/dom/index';
const showTip = {
  created(el, binding, vnode) {
    let tooltipNode = vnode.children.find((childCmpt) => childCmpt.component?.type.name == 'ElTooltip');
    if (tooltipNode) {
      // let { content } = tooltipNode.props;
      el.addEventListener('mouseenter', () => {
        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 showTip;

2. 全局引入

在main.js中引入该指令文件

import { createApp } from 'Vue'
import App from './App.vue'
import ElementPlus from 'element-plus'
import 'element-plus/dist/index.CSS'
import showTip from './directives/showTip.js';
const app = createApp(App);
app.directive('show-tip', showTip);
app.use(ElementPlus).mount('#app');

3. 组件中使用

在需要使用的组件中使用该指令

<template>
  <div class="test-wrapper">
    <div class="test-value" v-show-tip>
    <el-tooltip placement="top" :content="name">{{name}}</el-tooltip>
    </div>
  </div>
</template>
<script setup>
const name = '这是一段一段一段一段一段非常非常非常非常长长的文本';
</script>
<style scoped>
.test-value {
  width: 20%;
  display: inline-block;
  white-space: nowrap;
  text-overflow: ellipsis;
  overflow: hidden;
}
</style>

效果如下: 文本超出,鼠标移上去就会展示提示信息。

image.png

总结

文本超出展示详细信息在实际开发中是经常会用到的,自定义一个指令,这样需要的时候就可以直接引用了。

以上就是vue3超出文本展示el tooltip实现示例的详细内容,更多关于vue 超出文本展示el tooltip的资料请关注编程网其它相关文章!

--结束END--

本文标题: vue3超出文本展示eltooltip实现示例

本文链接: https://www.lsjlt.com/news/197623.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • vue3超出文本展示eltooltip实现示例
    目录实现思路1. 创建一个自定义指令文件showTip.js。该文件放在directives文件夹下。内容如下:2. 全局引入3. 组件中使用总结实现思路 最近在做项目的时候遇到一...
    99+
    2023-02-27
    vue 超出文本展示el tooltip vue el tooltip
  • vue3超出文本展示el tooltip如何实现
    这篇文章主要介绍“vue3超出文本展示el tooltip如何实现”,在日常操作中,相信很多人在vue3超出文本展示el tooltip如何实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答...
    99+
    2023-07-05
  • vue实现列表展示示例详解
    目录Vue 的CSS之deep语法::v-deepclassPrefix 前缀给元素绑定class总结Object.freeze关于Vue和ts的配合问题ISO8601和dayjs库...
    99+
    2024-04-02
  • css怎么实现单行、多行文本超出显示省略效果
    小编给大家分享一下css怎么实现单行、多行文本超出显示省略效果,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!   .ellip...
    99+
    2024-04-02
  • vue-cli3项目展示本地Markdown文件的示例分析
    小编给大家分享一下vue-cli3项目展示本地Markdown文件的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!【版本...
    99+
    2024-04-02
  • Vue3中使用vuex4的实现示例
    目录1、引入依赖:2、新建文件夹 store ,在里面新建文件 index.js3、index.js文件内容:4、在 main.js 中引入5、使用6、修改 count 的值1、引入...
    99+
    2024-04-02
  • Vue3实现Message消息组件示例
    目录组件设计 定义最终的组件 API 定义组件结构 模板和样式 模板 Template 消息图标 样式 组件脚本 创建组件实例 1、创建包裹容器,并设置外层的 Class 属性 2、...
    99+
    2024-04-02
  • Vue3+Element-Plus实现左侧菜单折叠与展开功能示例
    目录1.最终实现的效果图2.  实现左侧菜单折叠与展开功能步骤2.1 首先应该在菜单顶部放一个折叠展开的按钮条2.2 接下来,画按钮条UI结构,实现折叠与展开功能2.3&n...
    99+
    2024-04-02
  • React文字展开收起组件的实现示例
    目录前言背景开发1.1 定义组件所需字段1.2 获取截断后的文字1.3 获取展开收起按钮1.4 展开收起逻辑1.5 完整代码1.5.1 逻辑代码1.5.2 样式代码1.6 安装使用组...
    99+
    2024-04-02
  • Vue3+vueuse实现放大镜示例详解
    目录前言准备工作功能实现完整实现代码结束语前言 给大家带来一种潮流的方式,实现放大镜效果,安排 准备工作 下包: yarn add @vueuse/core或 npm i @vueu...
    99+
    2024-04-02
  • gRPC超时拦截器实现示例
    目录介绍安装快速开始1.创建 boot.yaml2.创建 main.go3.启动 main.go4.验证介绍 本文介绍如何通过 rk-boot 快速搭建 gRPC 超时拦截器。 什么...
    99+
    2024-04-02
  • Qt超时锁屏的实现示例
    概述 Qt实现超时锁屏的功能(工控机触摸屏),当手长时间不触摸屏幕的时候,程序超时会显示锁屏窗口。 效果 主窗口超时显示锁屏窗口: 系统窗口超时显示锁屏窗口: 实现思路 首先开...
    99+
    2024-04-02
  • CSS文本超出指定宽度后隐藏并显示为省略号的示例分析
    这篇文章主要为大家展示了“CSS文本超出指定宽度后隐藏并显示为省略号的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“CSS文本超出指定宽度后隐藏并显示为...
    99+
    2024-04-02
  • Pygame显示文字的实现示例
    目录1 Pygame的初始化2 屏幕的创建3 字体的创建4 字体的渲染5 文字的显示使用Pygame显示文字的步骤如图1所示。 图1 显示文字的步骤 1 Pygame的初始化 通过...
    99+
    2023-02-14
    Pygame显示文字 Pygame显示
  • Java实现导出Word文档的示例代码
    最近公司做项目,需要导出word或者PDF文档,PDF实现文档已经轻车熟路了,想研究搞一下word文档。经过调研发现了一个好用的开源项目Poi-tl http://deepoove....
    99+
    2023-02-09
    Java导出Word文档 Java导出Word Java Word
  • CSS5如何实现展示不全或超过跨过
    这篇文章给大家分享的是有关CSS5如何实现展示不全或超过跨过的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。 HTML完整源代码以下: <!DOCTYPE h...
    99+
    2024-04-02
  • vue 折叠展示多行文本组件的实现代码
    折叠展示多行文本组件 折叠展示多行文本组件,自动根据传入的expand判断是否需要折叠 两种模式:展开/收起展示全文本(默认)、popover展示全文本 先上代码 <t...
    99+
    2024-04-02
  • css怎么实现文本溢出显示省略号
    这篇文章主要介绍“css怎么实现文本溢出显示省略号”,在日常操作中,相信很多人在css怎么实现文本溢出显示省略号问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”css怎么实现文...
    99+
    2024-04-02
  • Vue3源码分析reactivity实现方法示例
    目录深入分析对于map、set、weakMap、weakSet的响应式拦截(1).mutableInstrumentations(2).shallowInstrumentations...
    99+
    2023-01-28
    Vue3源码分析reactivit方法 Vue reactivit
  • css如何实现文字超出隐藏并显示省略号
    这篇文章主要为大家展示了“css如何实现文字超出隐藏并显示省略号”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“css如何实现文字超出隐藏并显示省略号”这篇文章吧。文字超出隐藏并显示省略号单行(一...
    99+
    2023-06-26
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作