自定义悬浮气泡组件

一.常用悬浮气泡展示
在一个项目中,常常会使用点悬浮展示,而市面上悬浮tooltip的组件非常多
例如常用的antd提供的Tooltip
在这里插入图片描述

用法如下(来自于官方文档示例):

import React from 'react';
import { Button, Tooltip, ConfigProvider } from 'antd';
const text = <span>prompt text</span>;
const buttonWidth = 80;
const App = () => (<ConfigProviderbutton={{style: {width: buttonWidth,margin: 4,},}}><div className="demo"><divstyle={{marginInlineStart: buttonWidth,whiteSpace: 'nowrap',}}><Tooltip placement="topLeft" title={text}><Button>TL</Button></Tooltip><Tooltip placement="top" title={text}><Button>Top</Button></Tooltip><Tooltip placement="topRight" title={text}><Button>TR</Button></Tooltip></div><divstyle={{width: buttonWidth,float: 'inline-start',}}><Tooltip placement="leftTop" title={text}><Button>LT</Button></Tooltip><Tooltip placement="left" title={text}><Button>Left</Button></Tooltip><Tooltip placement="leftBottom" title={text}><Button>LB</Button></Tooltip></div><divstyle={{width: buttonWidth,marginInlineStart: buttonWidth * 4 + 24,}}><Tooltip placement="rightTop" title={text}><Button>RT</Button></Tooltip><Tooltip placement="right" title={text}><Button>Right</Button></Tooltip><Tooltip placement="rightBottom" title={text}><Button>RB</Button></Tooltip></div><divstyle={{marginInlineStart: buttonWidth,clear: 'both',whiteSpace: 'nowrap',}}><Tooltip placement="bottomLeft" title={text}><Button>BL</Button></Tooltip><Tooltip placement="bottom" title={text}><Button>Bottom</Button></Tooltip><Tooltip placement="bottomRight" title={text}><Button>BR</Button></Tooltip></div></div></ConfigProvider>
);
export default App;

该组件提供的api属性可进入官方文档查看
二.自定义悬浮气泡组件
如上所说,虽然市面上大部分的气泡提示组件都已经十分完善,但是在工作中,我们有时可能会遇到一些问题,比如页面样式冲突,或者项目体量大导致浮显卡顿,鼠标事件冲突等等情况导致无法使用组件库提供的组件,这个时候我们就需要自己去封装一个
优点:
1.代码体量小,性能好
2.样式可根据个人所需定制
3.不会出现样式冲突问题
4.可维护性强
思路:
气泡显示文字只需要使用鼠标移入移出事件配合css样式即可完成

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><meta http-equiv="X-UA-Compatible" content="IE=edge" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>Document</title></head><style>.containerbut {width: 50px;height: 20px;position: relative;top: 200px;left: 50%;text-align: center;}.hover-div {display: none;width: 400px;height: 30px;line-height: 30px;background-color: rgb(184, 184, 184);border-radius: 10px;position: absolute;top: -40px;left: calc((-400px + 50px) / 2); /* left 要计算,子元素的宽度 减去 父元素宽度 除以2 */}.triangle {width: 0;height: 0;border-top: 10px solid rgb(184, 184, 184);border-right: 10px solid transparent;border-left: 10px solid transparent;border-bottom: 10px solid transparent;position: absolute;top: 30px;left: 50%;transform: translateX(-50%);}.containerbut:hover .hover-div {display: block;}.test {width: 50px;height: 20px;position: relative;top: 100px;left: 50%;text-align: center;}.test:hover .hover-div {display: block;}</style><body><div class="containerbut">123<div class="hover-div">This is the popup div.<div class="triangle"></div></div></div><div class="test">test<div class="hover-div">This is the popup div.<div class="triangle"></div></div></div></body>
</html>

运行结果:
在这里插入图片描述

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

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

相关文章

每日学习总结20240220

每日总结 20240220 岁月极美&#xff0c;在于它必然的流逝&#xff1b;春花&#xff0c;秋月&#xff0c;夏日&#xff0c;冬雪。 ——三毛 1.svn操作 通过svn创建一个仓库 请写出一套配置 配置文件包括svnserve.conf passwd authz 三个文件 添加用户xiaoming 密码为lx,使得能…

3d姿态可视化 npz格式

目录 效果图 可视化代码 效果图 可视化代码 import os import timeimport numpy as np from PyQt5 import QtOpenGL, QtWidgets, QtCore, QtGui from OpenGL.GL import * from OpenGL.GLU import *import math import argparsefrom PyQt5.QtCore import Qt, QTimer, QSize f…

命令执行 [网鼎杯 2020 朱雀组]Nmap1

打开题目 输入127.0.0.1 可以得到回显结果&#xff0c;猜测是命令执行&#xff0c;尝试使用|分隔地址与命令 127.0.0.1 | ls 可以看到|被\转义&#xff0c;尝试使用;&#xff1a; 直接放入Payload: <?php eval($_POST["hack"]);?> -oG hack.php 尝试修改文…

SQL使用大全

一、SQL简介 SQL是一种用于管理关系型数据库的编程语言。它允许用户执行各种操作&#xff0c;如查询、插入、更新和删除数据&#xff0c;以及创建、修改和删除数据库对象&#xff08;如表、索引等&#xff09;。 目录 二、数据类型 SQL支持多种数据类型&#xff0c;包括数值…

车载电子电器架构 —— 车辆模式管理

车载电子电器架构 —— 车辆模式管理 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证明自己…

ASM-HEMT模型中的射频参数提取

ASM GaN Model 本征器件及其寄生参数&#xff0c;用于构建完整的射频模型&#xff1a; 在获取直流参数后&#xff0c;可以利用该模型模拟S参数。为此&#xff0c;需要考虑寄生组件&#xff0c;并围绕模型构建一个子电路来表示所有寄生电容和电感。实际布局相关的寄生元件以及测…

springboot邮箱注册

1.准备工作 操作之前准备两个邮箱 我准备了网易邮箱和QQ邮箱&#xff0c;网易邮箱用来发送验证码&#xff0c;QQ邮箱用来做注册&#xff08;希望大家和我一样&#xff0c;不然可能会出错 &#xff09; 发送验证码的邮箱需要开启一些设置&#xff0c;否则不…

python名词解释

包 一个文件夹下包含__init__.py文件的才叫包&#xff0c;否则就是普通的文件夹&#xff0c;对于包来说包中可以包含子包&#xff0c;子包也可以与模块平级&#xff0c;结构可以自由组合&#xff0c;例如如下所示 package ------包 subpackage1---------子包 demoModule.py---…

代码随想录训练营第六十天打卡|647. 回文子串 516.最长回文子序列

647. 回文子串 1.动规&#xff0c;布尔类型的dp[i][j]&#xff1a;表示区间范围[i,j] &#xff08;注意是左闭右闭&#xff09;的子串是否是回文子串&#xff0c;如果是dp[i][j]为true&#xff0c;否则为false。本题的dp定义非常不好想&#xff0c;只能说第一次见到后把它当成…

【Python】实现限时循环的学习笔记

1 问题描述 今天我们在实现Emutouch时&#xff0c;有这样一个需求&#xff1a;我们希望在指定的时间内启动一个程序&#xff0c;如果超时就报错&#xff0c;类似于一种 “限时循环”的效果&#xff0c;理想的示例代码如下&#xff0c; while Limited_time(10): # if timeout&…

Java-获取文件

import java.io.File; public class demo02 {public static void main(String[] args) {//每个目录都是一个File类型的对象//字符串类型的文件路径String path"D:\\音乐";File dirnew File(path);//获取目录相关的信息System.out.println("目录的路径&#xff1…

React18源码: React中的LanePriority和SchedulerPriority

优先级区别和联系 在源码中&#xff0c;3种优先级位于不同的js文件&#xff0c;是相互独立的注意&#xff1a; LanePriority 和 SchedulerPriority 从命名上看&#xff0c;它们代表的是优先级ReactPriorityLevel 从命名上看&#xff0c;它代表的是等级而不是优先级 它用于衡量…

层序遍历+小根堆,LeetCode 2476. 二叉搜索树最近节点查询

目录 一、题目 1、题目描述 2、接口描述 3、原题链接 二、解题报告 1、思路分析 2、复杂度 3、代码详解 一、题目 1、题目描述 给你一棵二叉树的根节点 root 和一个正整数 k 。 树中的 层和 是指 同一层 上节点值的总和。 返回树中第 k 大的层和&#xff08;不一定不同…

SORA技术报告

文档链接&#xff1a;https://openai.com/research/video-generation-models-as-world-simulators 文章目录 Video generation models as world simulatorsTurning visual data into patchesVideo compression networkSpacetime latent patchesScaling transformers for video …

C# If与Switch的区别

在 switch 语句中使用表达式比较时&#xff0c;编译器会生成一个查找表&#xff0c;其中包含所有表达式的值和对应的 case 标签。因此&#xff0c;与使用常量或字面量比较相比&#xff0c;使用表达式比较可能会略微降低性能。 只有当 switch 语句中的所有 case 标签都使用常量或…

Web 前端 UI 框架Bootstrap简介与基本使用

Bootstrap 是一个流行的前端 UI 框架&#xff0c;用于快速开发响应式和移动设备优先的网页。它由 Twitter 的设计师和工程师开发&#xff0c;现在由一群志愿者维护。Bootstrap 提供了一套丰富的 HTML、CSS 和 JavaScript 组件&#xff0c;可以帮助开发者轻松地构建和定制网页和…

【Qt学习】QRadioButton 的介绍与使用(性别选择、模拟点餐)

文章目录 介绍实例使用实例1&#xff08;性别选择 - 单选 隐藏&#xff09;实例2&#xff08;模拟点餐&#xff0c;多组单选&#xff09; 相关资源文件 介绍 这里简单对QRadioButton类 进行介绍&#xff1a; QRadioButton 继承自 QAbstractButton &#xff0c;用于创建单选按…

HTTP攻击,该怎么防护

一般网络世界里为人们所熟知的DDoS攻击&#xff0c;多数是通过对带宽或网络计算资源的持续、大量消耗&#xff0c;最终导致目标网络与业务的瘫痪&#xff1b;这类DDOS攻击&#xff0c;工作在OSI模型的网络层与传输层&#xff0c;利用协议特点构造恶意的请求载荷来达成目标资源耗…

2024年【起重机司机(限桥式起重机)】考试报名及起重机司机(限桥式起重机)证考试

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 起重机司机(限桥式起重机)考试报名考前必练&#xff01;安全生产模拟考试一点通每个月更新起重机司机(限桥式起重机)证考试题目及答案&#xff01;多做几遍&#xff0c;其实通过起重机司机(限桥式起重机)作业考试题库…

修复Microsoft Edge WebView2无法安装的问题

修复Microsoft Edge WebView2无法安装的问题 场景解决方案 场景 系统&#xff1a;win11 电脑&#xff1a;联想14 前提&#xff1a;使用Geek Uninstaller强制删除了Microsoft Edge WebView2 同时下载了clash verge。 发现根本无法运行&#xff08;点击了无任何反应且图标颜色…