实现鼠标经过某个元素时弹出提示框(通常称为“工具提示”或“悬浮提示”)
要实现鼠标经过某个元素时弹出提示框(通常称为“工具提示”或“悬浮提示”),你可以使用 JavaScript 结合 CSS 来创建这个效果。以下是详细步骤,包括 HTML、CSS 和 JavaScript 的代码示例。
- HTML 结构
首先,创建一个简单的 HTML 结构,其中包含一个鼠标经过的元素和一个隐藏的提示框。
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Tooltip Example</title><link rel="stylesheet" href="styles.css">
</head>
<body><div class="tooltip-container"><span class="hover-target">Hover over me!</span><div class="tooltip">This is a tooltip message!</div></div><script src="script.js"></script>
</body>
</html>
- CSS 样式
接下来,为提示框和目标元素添加样式。我们将设置提示框的默认隐藏状态,并定义它的外观。
body {font-family: Arial, sans-serif;
}.tooltip-container {position: relative; /* 使工具提示相对于父元素定位 */display: inline-block; /* 使得容器根据内容自适应 */
}.hover-target {cursor: pointer; /* 鼠标悬停时显示指针 */padding: 10px;background-color: #007bff;color: white;border-radius: 5px;
}.tooltip {display: none; /* 默认隐藏 */position: absolute; /* 绝对定位 */bottom: 100%; /* 提示框位置在目标元素上方 */left: 50%;transform: translateX(-50%); /* 水平居中 */background-color: #333; /* 提示框背景颜色 */color: #fff; /* 提示框文字颜色 */padding: 5px;border-radius: 5px;white-space: nowrap; /* 防止文字换行 */z-index: 10; /* 确保提示框在其他元素之上 */
}
- JavaScript 代码
最后,使用 JavaScript 来控制提示框的显示和隐藏。你可以使用 mouseover 和 mouseout 事件来实现这个功能。
// 获取目标元素和提示框元素
const hoverTarget = document.querySelector('.hover-target');
const tooltip = document.querySelector('.tooltip');// 当鼠标移入目标元素时显示提示框
hoverTarget.addEventListener('mouseover', () => {tooltip.style.display = 'block'; // 显示提示框
});// 当鼠标移出目标元素时隐藏提示框
hoverTarget.addEventListener('mouseout', () => {tooltip.style.display = 'none'; // 隐藏提示框
});
效果
在这个示例中,当用户将鼠标悬停在“Hover over me!”文本上时,提示框将会显示出来,提示内容为“This is a tooltip message!”。当鼠标移开时,提示框将自动隐藏。
mouseover 和 mouseout 是两个常用的 JavaScript 事件,通常用于处理鼠标与元素之间的交互。这两个事件可以用于创建交互式和动态的用户界面,增强用户体验。以下是对这两个事件的详细介绍。
1. mouseover 事件
mouseover 事件在鼠标指针移到某个元素上方时触发。此事件会在鼠标进入元素或其子元素时被触发。
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Mouseover Event Example</title><style>.box {width: 200px;height: 200px;background-color: lightblue;border: 2px solid blue;text-align: center;line-height: 200px;font-size: 24px;margin: 20px;transition: background-color 0.3s;}</style>
</head>
<body><div class="box">Hover me!</div><script>const box = document.querySelector('.box');box.addEventListener('mouseover', () => {box.style.backgroundColor = 'lightcoral'; // 改变背景色box.textContent = 'Mouse Over!';});</script>
</body>
</html>
解析
当鼠标指针移动到 .box 元素上方时,mouseover 事件会被触发,背景颜色将改变为 lightcoral,并且文本内容会更新为“Mouse Over!”。
2. mouseout 事件
mouseout 事件在鼠标指针离开某个元素或其子元素时触发。这个事件会在鼠标移出元素时被触发。
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Mouseout Event Example</title><style>.box {width: 200px;height: 200px;background-color: lightblue;border: 2px solid blue;text-align: center;line-height: 200px;font-size: 24px;margin: 20px;transition: background-color 0.3s;}</style>
</head>
<body><div class="box">Hover me!</div><script>const box = document.querySelector('.box');box.addEventListener('mouseout', () => {box.style.backgroundColor = 'lightblue'; // 恢复背景色box.textContent = 'Hover me!'; // 恢复文本});</script>
</body>
</html>
解析
当鼠标指针离开 .box 元素时,mouseout 事件会被触发,背景颜色将恢复为 lightblue,并且文本内容会更新为“Hover me!”。
3. mouseover 与 mouseenter 的区别
- mouseover 事件会在鼠标进入元素及其所有子元素时触发。
- mouseenter 事件仅在鼠标进入目标元素本身时触发,而不会在子元素上触发。这使得 mouseenter 和
- mouseleave 事件不会像 mouseover 和 mouseout 那样产生多次触发。
4. mouseout 与 mouseleave 的区别
- mouseout 事件在鼠标移出元素及其子元素时触发。
- mouseleave 事件仅在鼠标离开目标元素本身时触发。
5. 使用场景
- 用户界面交互: 可以用于实现动态按钮、菜单、图片等效果。
- 图像悬停效果: 鼠标悬停时改变图像或显示描述文本。
- 动态反馈: 提供视觉反馈,例如在鼠标悬停时突出显示某些内容。
相关文章:
实现鼠标经过某个元素时弹出提示框(通常称为“工具提示”或“悬浮提示”)
要实现鼠标经过某个元素时弹出提示框(通常称为“工具提示”或“悬浮提示”),你可以使用 JavaScript 结合 CSS 来创建这个效果。以下是详细步骤,包括 HTML、CSS 和 JavaScript 的代码示例。 HTML 结构 首先,创建一个简…...
【GAMES101笔记速查——Lecture 17 Materials and Appearances】
目录 1 材质和外观 1.1 自然界中,外观是光线和材质共同作用的结果 1.2 图形学中,什么是材质? 1.2.1 渲染方程严格正确,其中BRDF项决定了物体的材质 1.2.2 漫反射材质 (1)如何定义漫反射系数࿱…...
对于从vscode ssh到virtualBox的timeout记录
如题,解决方式如下: 1.把虚拟机关机退出来,在这个界面进行网络设置:选桥接网卡 2.然后再进系统,使用命令 ip addr查看如今的ip地址,应该和在本机里面看到的是一个网段 3.打开vscode,该干啥干…...
鸿蒙原生应用扬帆起航
就在2024年6月21日华为在开发者大会上发布了全新操作的系统HarmonyOS Next开发测试版,网友们把它称之为“称之为纯血鸿蒙”。因为在此之前鸿蒙系统底层式有两套基础架构的,一套是是Android的AOSP,一套是鸿蒙的Open Harmony,因为早…...
《计算机视觉》—— 表情识别
根据计算眼睛、嘴巴的变化,判断是什么表情结合以下两篇文章来理解表情识别的实现方法 基于 dilib 库的人脸检测 https://blog.csdn.net/weixin_73504499/article/details/142977202?spm1001.2014.3001.5501 基于 dlib 库的人脸关键点定位 https://blog.csdn.net/we…...
NVIDIA Aerial Omniverse
NVIDIA Aerial Omniverse 数字孪生助力打造新一代无线网络 文章目录 前言一、从链路级仿真到系统级仿真二、转变无线研发方式1. 开放且可定制的模块化平台2. 适用于 6G 标准化的 3GPP 兼容平台3. 部署前测试4. AI 和 ML 在数字孪生中的应用5. 高级物理精准的电磁求解器6. 合作伙…...
QT程序报错解决方案:Cannot queue arguments of type ‘QTextCharFormat‘ 或 ‘QTextCursor‘
项目场景: 项目场景:基于QT实现的C某程序,搭载在Linux环境中。 问题描述 执行程序时,发现log中报错如下内容: QObject::connect: Cannot queue arguments of type QTextCharFormat (Make sure QTextCharFormat is r…...
MySQL知识点_03
MySQL 命令大全 基础命令 操作命令连接到 MySQL 数据库mysql -u 用户名 -p查看所有数据库SHOW DATABASES;选择一个数据库USE 数据库名;查看所有表SHOW TABLES;查看表结构DESCRIBE 表名; 或 SHOW COLUMNS FROM 表名;创建一个新数据库CREATE DATABASE 数据库名;删除一个数据库D…...
leetcode:744. 寻找比目标字母大的最小字母(python3解法)
难度:简单 给你一个字符数组 letters,该数组按非递减顺序排序,以及一个字符 target。letters 里至少有两个不同的字符。 返回 letters 中大于 target 的最小的字符。如果不存在这样的字符,则返回 letters 的第一个字符。 示例 1&a…...
2015年-2016年 软件工程程序设计题(算法题)实战_c语言程序设计数据结构程序设计分析
文章目录 2015年1.c语言程序设计部分2.数据结构程序设计部分 2016年1.c语言程序设计部分2.数据结构程序设计部分 2015年 1.c语言程序设计部分 1.从一组数据中选择最大的和最小的输出。 void print_maxandmin(double a[],int length) //在一组数据中选择最大的或者最小的输出…...
整理一下实际开发和工作中Git工具的使用 (持续更新中)
介绍一下Git 在实际开发和工作中,Git工具的使用可以说是至关重要的,它不仅提高了团队协作的效率,还帮助开发者有效地管理代码版本。以下是对Git工具使用的扩展描述: 版本控制:Git能够跟踪代码的每一个修改记录&#x…...
Axios 的基本使用与 Fetch 的比较、在 Vue 项目中使用 Axios 的最佳实践
文章目录 1. 引言2. Axios 的基本使用2.1 安装 Axios2.2 发起 GET 请求2.3 发起 POST 请求2.4 请求拦截器2.5 设置全局配置 3. Axios 与 Fetch 的比较3.1 Axios 与 Fetch 的异同点3.2 Fetch 的基本使用3.3 使用 Fetch 处理 POST 请求 4. 讨论在 Vue 项目中使用 Axios 的最佳实践…...
Dockerfile样例
一、基础jar镜像制作 ## Dockerfile FROM registry.openanolis.cn/openanolis/anolisos:8.9 RUN mkdir /work ADD jdk17.tar.gz fonts.tar.gz /work/ RUN yum install fontconfig ttmkfdir -y && yum clean all && \chmod -R 755 /work/fonts ADD fonts.conf …...
MYSQL-多表查询
一、概述 1、定义 多表查询,也称为关联查询,指两个或更多个表一起完成查询操作。 2、前提条件 这些一起查询的表之间是有关系的(一对一、一对多),它们之间一定是有关联字段,这个关联字段可能建立了外键…...
MySQL改密码后不生效问题
MySQL修改密码后连接报密码错误 1.mysql修改密码命令: 这两种连接方式密码都必须修改 修改远程连接密码 ALTER USER ‘root’‘%’ IDENTIFIED BY ‘password’; 修改本地连接密码 ALTER USER ‘root’‘localhost’ IDENTIFIED BY ‘password’; 修改完后必须刷新…...
15分钟学Go 第1天:Go语言简介与特点
Go语言简介与特点 1. Go语言概述 Go语言(又称Golang)是由谷歌于2007年开发并在2009年正式发布的一种开源编程语言。它旨在简单、高效地进行软件开发,尤其适合于网络编程和分布式系统。 1.1 发展背景 多核处理器:随着计算机硬件…...
UDP/TCP协议
网络层只负责将数据包送达至目标主机,并不负责将数据包上交给上层的哪一个应用程序,这是传输层需要干的事,传输层通过端口来区分不同的应用程序。传输层协议主要分为UDP(用户数据报协议)和TCP(传输控制协议…...
gitee建立/取消关联仓库
目录 一、常用指令总结 二、建立关联具体操作 三、取消关联具体操作 一、常用指令总结 首先要选中要关联的文件,右击,选择Git Bash Here。 git remote -v //查看自己的文件有几个关联的仓库git init //初始化文件夹为git可远程建立链接的文件夹…...
在 Windows 环境下,Git 默认会自动处理 CRLF 和 LF 之间的转换。
在 Windows 环境下,Git 默认会自动处理 CRLF 和 LF 之间的转换。 要确保这一点并自动处理换行符差异,你可以按照以下步骤配置 1. 配置 Git 自动转换 CRLF 使用 Git Bash 或命令行执行以下命令,设置 Git 自动处理换行符: git con…...
Kibana可视化Dashboard如何基于字段是否包含某关键词进行过滤
kinana是一个功能强大、可对Elasticsearch数据进行可视化的开源工具。 我们在dashboard创建可视化时,有时需要将某个index里数据的某个字段根据是否包含某些特定关键词进行过滤,这个时候就可以用到lens里的filter功能很方便地进行操作。 如上图所示&…...
零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?
一、核心优势:专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发,是一款收费低廉但功能全面的Windows NAS工具,主打“无学习成本部署” 。与其他NAS软件相比,其优势在于: 无需硬件改造:将任意W…...
React hook之useRef
React useRef 详解 useRef 是 React 提供的一个 Hook,用于在函数组件中创建可变的引用对象。它在 React 开发中有多种重要用途,下面我将全面详细地介绍它的特性和用法。 基本概念 1. 创建 ref const refContainer useRef(initialValue);initialValu…...
AI Agent与Agentic AI:原理、应用、挑战与未来展望
文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例:使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例:使用OpenAI GPT-3进…...
【服务器压力测试】本地PC电脑作为服务器运行时出现卡顿和资源紧张(Windows/Linux)
要让本地PC电脑作为服务器运行时出现卡顿和资源紧张的情况,可以通过以下几种方式模拟或触发: 1. 增加CPU负载 运行大量计算密集型任务,例如: 使用多线程循环执行复杂计算(如数学运算、加密解密等)。运行图…...
Typeerror: cannot read properties of undefined (reading ‘XXX‘)
最近需要在离线机器上运行软件,所以得把软件用docker打包起来,大部分功能都没问题,出了一个奇怪的事情。同样的代码,在本机上用vscode可以运行起来,但是打包之后在docker里出现了问题。使用的是dialog组件,…...
如何在网页里填写 PDF 表格?
有时候,你可能希望用户能在你的网站上填写 PDF 表单。然而,这件事并不简单,因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件,但原生并不支持编辑或填写它们。更糟的是,如果你想收集表单数据ÿ…...
Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析
Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析 一、第一轮提问(基础概念问题) 1. 请解释Spring框架的核心容器是什么?它在Spring中起到什么作用? Spring框架的核心容器是IoC容器&#…...
Golang——6、指针和结构体
指针和结构体 1、指针1.1、指针地址和指针类型1.2、指针取值1.3、new和make 2、结构体2.1、type关键字的使用2.2、结构体的定义和初始化2.3、结构体方法和接收者2.4、给任意类型添加方法2.5、结构体的匿名字段2.6、嵌套结构体2.7、嵌套匿名结构体2.8、结构体的继承 3、结构体与…...
日常一水C
多态 言简意赅:就是一个对象面对同一事件时做出的不同反应 而之前的继承中说过,当子类和父类的函数名相同时,会隐藏父类的同名函数转而调用子类的同名函数,如果要调用父类的同名函数,那么就需要对父类进行引用&#…...
wpf在image控件上快速显示内存图像
wpf在image控件上快速显示内存图像https://www.cnblogs.com/haodafeng/p/10431387.html 如果你在寻找能够快速在image控件刷新大图像(比如分辨率3000*3000的图像)的办法,尤其是想把内存中的裸数据(只有图像的数据,不包…...
