实现鼠标经过某个元素时弹出提示框(通常称为“工具提示”或“悬浮提示”)

要实现鼠标经过某个元素时弹出提示框(通常称为“工具提示”或“悬浮提示”),你可以使用 JavaScript 结合 CSS 来创建这个效果。以下是详细步骤,包括 HTML、CSS 和 JavaScript 的代码示例。

  1. 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>
  1. 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; /* 确保提示框在其他元素之上 */
}
  1. 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. 使用场景

  • 用户界面交互: 可以用于实现动态按钮、菜单、图片等效果。
  • 图像悬停效果: 鼠标悬停时改变图像或显示描述文本。
  • 动态反馈: 提供视觉反馈,例如在鼠标悬停时突出显示某些内容。

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

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

相关文章

高级语言源程序转换为可执行目标文件

将高级语言源程序转换为可执行目标文件的过程通常包括以下几个主要步骤&#xff1a; ​ 1. 预处理&#xff08;Preprocessing&#xff09;&#xff1a; 由谁完成预处理器&#xff08;cpp&#xff09;操作处理源代码中的预处理指令&#xff08;如宏定义、文件包含、条件编译等&…

Linux——动态卷的管理

确保已经设置了对应的动态卷的驱动&#xff08;provisioner 制备器&#xff09;基于动态驱动创建对应的存储类创建PVC &#xff08;PVC 将会自动根据大小、访问模式等创建PV&#xff09;Pod的spec 中通过volumes 和 volumemounts 来完成pvc 的绑定和pvc对应pv的挂载删除pod 不…

Linux网络编程(七)-TCP协议客户端及代码实现

1.TCP的客户端代码流程简述 这一章将为大家讲解Socket通信中客户端的实现过程&#xff0c;还是先上图&#xff0c;请大家了解客户端的步骤 可以看到&#xff0c;相比服务端&#xff0c;客户端的步骤简单的很多。事实上这种情况比较多&#xff0c;比如一个服务端会有多个客户端…

JMeter模拟并发请求

PostMan不是严格意义上的并发请求工具&#xff0c;实际是串行的&#xff0c;如果需要测试后台接口并发时程序的准确性&#xff0c;建议采用JMeter工具。 案例&#xff1a;JMeter设置20个并发卖票请求&#xff0c;查看后台是否存在超卖的情况 方式一&#xff1a;一共10张票&…

TrickMo 安卓银行木马新变种利用虚假锁屏窃取密码

近期&#xff0c;研究人员在野外发现了 TrickMo Android 银行木马的 40 个新变种&#xff0c;它们与 16 个下载器和 22 个不同的命令和控制&#xff08;C2&#xff09;基础设施相关联&#xff0c;具有旨在窃取 Android 密码的新功能。 Zimperium 和 Cleafy 均报道了此消息。 …

编写一个通用的i2c控制器驱动框架

往期内容 I2C子系统专栏&#xff1a; I2C&#xff08;IIC&#xff09;协议讲解-CSDN博客SMBus 协议详解-CSDN博客I2C相关结构体讲解:i2c_adapter、i2c_algorithm、i2c_msg-CSDN博客内核提供的通用I2C设备驱动I2c-dev.c分析&#xff1a;注册篇内核提供的通用I2C设备驱动I2C-dev.…

时空数据时序预测模型: HA、VAR、GBRT、GCN、DCRNN、FCCF、ST-MGCN

HA (Historical Average) HA (Historical Average&#xff0c;历史平均模型) 是一种基础的时间序列预测方法&#xff0c;通常用于预测具有周期性或季节性规律的数据。它通过计算历史上同一时间段的平均值来预测未来值&#xff0c;假设数据会遵循某种周期性的变化模式。以下是对…

智能家居的“眼睛”:计算机视觉如何让家更智能

引言 在不远的未来&#xff0c;当我们走进家门&#xff0c;灯光自动亮起&#xff0c;空调已经调至最舒适的温度&#xff0c;甚至音乐也播放着我们最喜欢的歌曲。 这一切&#xff0c;都得益于智能家居系统的发展。而在这个系统中&#xff0c;计算机视觉技术扮演着至关重要的角色…

SpringBoot车辆管理系统:构建与优化

4系统概要设计 4.1概述 本系统采用B/S结构(Browser/Server,浏览器/服务器结构)和基于Web服务两种模式&#xff0c;是一个适用于Internet环境下的模型结构。只要用户能连上Internet,便可以在任何时间、任何地点使用。系统工作原理图如图4-1所示&#xff1a; 图4-1系统工作原理…

群晖通过 Docker 安装 MySQL

1. 打开 Docker 应用&#xff0c;并在注册表搜索 MySQL 2. 下载 MySQL 镜像&#xff0c;并选择版本 3. 在 Docker 文件夹中创建 MySQL&#xff0c;并创建子文件夹 4. 设置权限 5. 选择 MySQL 映像运行&#xff0c;创建容器 6. 配置 MySQL 容器 6.1 使用高权限执行容器 6.2 启…

scrapy 爬虫学习之【中医药材】爬虫

本项目纯学习使用。 1 scrapy 代码 爬取逻辑非常简单&#xff0c;根据url来处理翻页&#xff0c;然后获取到详情页面的链接&#xff0c;再去爬取详情页面的内容即可&#xff0c;最终数据落地到excel中。 经测试&#xff0c;总计获取 11299条中医药材数据。 import pandas as…

idea 2023 配置 web service

前言 能在网上查到的资料,都是比较老的,搞了一上午才配置好了环境 因此记录一下,服务你我他 我的环境: java 1.8,Idea2023.1 配置web service 服务端 直接新建一个java新项目 下载插件 添加框架支持 启动项目 配置web service 客户端 新建项目,下载三个插件的步骤和上面服务…

JMeter之mqtt-jmeter 插件介绍

前言 mqtt-jmeter插件是JMeter中的一个第三方插件&#xff0c;用于支持MQTT&#xff08;Message Queuing Telemetry Transport&#xff09;协议的性能测试。MQTT是一种轻量级的发布/订阅消息传输协议&#xff0c;广泛应用于物联网和传感器网络中。 一、安装插件 mqtt-jmeter项目…

【Hive】6-Hive函数、运算符使用

Hive函数、运算符使用 Hive内置运算符 概述 整体上&#xff0c;Hive支持的运算符可以分为三大类&#xff1a;关系运算、算术运算、逻辑运算。 官方参考文档&#xff1a;https://cwiki.apache.org/confluence/display/Hive/LanguageManualUDF 也可以使用下述方式查看运算符的…

2024年AI 制作PPT新宠儿,3款神器集锦,让你的演示与众不同

咱们今儿聊聊最近超火的AI做PPT的工具。这年头&#xff0c;谁不想省事儿&#xff0c;少熬夜加班&#xff0c;多享受享受生活啊&#xff1f;所以&#xff0c;AI开始帮咱们搞定做PPT这种费时的活儿&#xff0c;我自然得好好研究研究。今天&#xff0c;我就给大家详细说说三款很火…

Linux下的进程解析(level 2)

目录 引言 pid解析 /proc 系统调用 fork &#xff1a;创建子进程 执行流分析 父子进程谁先运行 引言 在当今的信息技术时代&#xff0c;操作系统作为计算机系统的核心组件&#xff0c;承担着资源管理、任务调度等重要职责。Linux作为一种开源、高性能的操作系统&#xf…

第11篇:网络安全协议

目录 引言 11.1 安全套接字层&#xff08;SSL&#xff09;和传输层安全&#xff08;TLS&#xff09;协议 11.1.1 SSL/TLS 的工作原理 11.1.2 SSL/TLS 的应用场景 11.2 虚拟专用网&#xff08;VPN&#xff09;和 IP 安全协议&#xff08;IPSec&#xff09; 11.2.1 VPN 的工…

《深度学习》OpenCV EigenFaces算法 人脸识别

目录 一、EigenFaces算法 1、什么是EigenFaces算法 2、原理 3、实现步骤 1&#xff09;数据预处理 2&#xff09;特征提取 3&#xff09;构建模型 4&#xff09;识别 4、优缺点 1&#xff09;优点 2&#xff09;缺点 二、案例实现 1、完整代码 运行结果&#xff…

9.存储过程安全性博客大纲(9/10)

存储过程安全性博客大纲 引言 在数据库系统中&#xff0c;存储过程是一种预先编写好的SQL代码集合&#xff0c;它被保存在数据库服务器上&#xff0c;可以通过指定的名称来调用执行。存储过程可以包含一系列的控制流语句&#xff0c;如IF条件语句、WHILE循环等&#xff0c;使…

「从零开始的 Vue 3 系列」:第十一章——跨域问题解决方案全解析

前言 本系列将从零开始&#xff0c;系统性地介绍 Vue 3 的常用 API&#xff0c;逐步深入每个核心概念与功能模块。通过详尽的讲解与实战演示&#xff0c;帮助大家掌握 Vue 3 的基础与进阶知识&#xff0c;最终具备独立搭建完整 Vue 3 项目的能力。 第十一章&#xff1a;跨域问…