Element Plus 组件库实现:3. Tooltip(1)

前言

在现代Web开发中,Tooltip组件已经成为提升用户体验和界面交互性的重要元素。Tooltip,即工具提示,是一种在用户与页面元素交互时,提供额外信息或说明的轻量级弹窗。它的出现不仅丰富了页面内容的展示方式,还帮助用户更好地理解页面元素的功能和使用方法。

本文将介绍Tooltip组件的简单实现思路,从需求分析、确定方案、设计思路三个方面解析如何开发一个基本的的Tooltip组件。

需求分析

先来看下Tooltip组件需要具备什么功能:

  • 基本功能:
    • 触发区域
    • 展示区域
  • 触发方式:
    • click触发
    • hover触发
    • 手动触发
  • 隐藏方式:与触发方式相似,但是有的需要点击空白处也实现隐藏

以上就是Tooltip组件需要的基本功能,也是在开发中较为常用的,重点可以总结为一句话:在触发区域发生特定事件的时候,展示区域的隐藏和显示进行切换

确定方案

初步确定属性和事件:

ts 复制代码
export interface TooltipProps {
  // 显示内容
  content?: string
  // 触发方式
  trigger?: 'hover' | 'click'
  // 手动控制
  manual?: boolean
}
// 改变状态发出事件
export interface TooltipEmits {
  (e: 'visible-change', value: boolean): void
  // 点击空白处隐藏
  (e: 'click-outside', value: boolean): void
}

// 使用户可以手动打开或关闭弹框
export interface TooltipInstance {
  show: () => void
  hide: () => void
}

确定组件基本内容:

html 复制代码
<template>
    <div class="yv-tooltip">
        <!-- 触发区域 -->
        <div class="yv-tooltip__trigger">
            <slot></slot>
        </div>
            <!-- 展示区域 -->
        <div v-if="isOpen" class="yv-tooltip__popper" ref="popperNode">
           // 具名插槽用于展示显示内容
            <slot name="content"></slot>
        </div>
    </div>
</template>

第三方库popper.js

这里先来看一个第三方库popper.js,为什么需要用到这个库呢,先来看上边的图片,这是element plus的Tooltip组件的基础用法,也就是展示区域可以根据一个placement属性来决定展示效果,比如展示的方向、对其位置,那么如果让我们手动去写的话,这就要涉及到不小的计算量和更复杂的需求,当然这并不是本组件库实现的重点内容,所以这里我们可以借助一个第三方库来实现相应的效果------popper.js,接下来先看这个库是如何使用的:

使用popper.js

安装:

bash 复制代码
npm i @popperjs/core

使用:

这里简单展示使用方法

js 复制代码
import { createPopper } from '@popperjs/core';

const button = document.querySelector('#button');
const tooltip = document.querySelector('#tooltip');

createPopper(button, tooltip, {
  placement: 'right',
});

效果:

可以看到,使用的方法很简单,需要两个DOM元素,也就是触发区域和展示区域,将这两个元素和placement作为参数传到createPopper方法中并且执行createPopper方法就可以了,其他更多神奇的效果见popper.js官方文档,这里不再一一列举,接下来我们将借助这一第三方库完成对应的效果。

设计思路

结合以上内容,可以列举出大概的设计思路:

  • 实现基本的显示/隐藏
  • 实现click/hover触发
  • 实现点击空白处隐藏
  • 支持手动触发,比如将触发事件绑定到一个button上
  • 支持popper参数
  • 可能还需要动画效果和其他样式

代码实现

歇一会儿,下一小节再写吧

总结

本文从需求分析,确定方案,设计思路四个方面简单介绍了Tooltip组件的基本实现方式,注意这里需要借助一个第三方库------popperjs来帮助我们完成一些效果,这样可以节省大量开发时间,具体代码实现后续补充。如有错误还请大佬评论指正。

相关推荐
无双_Joney13 分钟前
[更新迭代 - 1] Nestjs 在24年底更新了啥?(功能篇)
前端·后端·nestjs
在云端易逍遥15 分钟前
前端必学的 CSS Grid 布局体系
前端·css
ccnocare16 分钟前
选择文件夹路径
前端
艾小码16 分钟前
还在被超长列表卡到崩溃?3招搞定虚拟滚动,性能直接起飞!
前端·javascript·react.js
闰五月17 分钟前
JavaScript作用域与作用域链详解
前端·面试
小刘大王18 分钟前
while循环与死循环
架构·前端框架
泉城老铁21 分钟前
idea 优化卡顿
前端·后端·敏捷开发
前端康师傅21 分钟前
JavaScript 作用域常见问题及解决方案
前端·javascript
司宸22 分钟前
Prompt结构化输出:从入门到精通的系统指南
前端