纯CSS3实现鼠标悬停提示气泡效果

下面是详细讲解"纯CSS3实现鼠标悬停提示气泡效果"的完整攻略:

一、简介

在Web开发中,经常需要对某些元素添加提示信息,尤其是一些带有缩略语或者关键词的标签,需要在鼠标悬停时显示具体的解释。常见的方法是通过JavaScript实现,但其需要额外的代码和操作,而纯CSS呈现这种效果更简单、更轻量级、更优雅。这种效果通常被称作"鼠标悬停提示气泡效果"。

二、实现步骤

要实现这种效果,需要使用CSS的伪元素选择器::before::after,同时使用CSS3的transition以及opacity属性,默认情况下气泡是半透明不显示的,只有在鼠标悬停在相关元素上时,气泡才会通过transition逐渐变成不透明显示气泡内容。下面是实现的具体步骤。

(1) 创建HTML结构

首先,在HTML中创建一个需要显示提示信息的元素,如下所示,其中span元素用于显示提示信息,其初始情况下是半透明不可见的。

<div class="tooltip">
  <span>这是提示信息</span>
  相关元素
</div>

(2) 声明CSS样式

在CSS中,可以通过伪元素选择器::before::after来创建气泡的样式,同时需要通过transition属性控制opacity逐渐变化的过程。下面是关键CSS代码。

/* 定位tooltip元素 */
.tooltip {
  position: relative;
  display: inline-block;
}

/* 鼠标悬停显示气泡 */
.tooltip:hover::before,
.tooltip:hover::after {
  opacity: 1;
}

/* 定义tooltip箭头的样式 */ 
.tooltip::before {
  content: "";
  position: absolute;
  bottom: 100%;
  left: 50%;
  margin-bottom: 5px;
  margin-left: -5px;
  border-width: 5px;
  border-style: solid;
  border-color: transparent transparent #333 transparent;
  opacity: 0;
  transition: opacity 0.3s ease;
}

/* 定义tooltip气泡的样式 */
.tooltip::after {
  content: attr(data-tooltip);
  position: absolute;
  left: 50%;
  bottom: 100%;
  margin-left: -60px;
  padding: 5px 10px;
  border-radius: 4px;
  background-color: #333;
  color: #fff;
  font-size: 16px;
  text-align: center;
  white-space: nowrap;
  opacity: 0;
  transition: opacity 0.3s ease;
}

由上述CSS代码可知,before元素用来绘制气泡的三角形箭头,而after元素用来展示气泡的具体内容,其中opacity属性用来控制气泡的初始情况,同时用于过渡动画的展示。需要注意的是,before和after元素的opacity初始值应为0,只有在鼠标悬停时变成1。

(3) JavaScript实现

以上操作都可以在CSS中实现,不需要JavaScript的干预,但如果需要动态获取tooltip元素的内容,则需要借助JavaScript,具体代码如下所示。

var tooltip = document.querySelectorAll(".tooltip");
for (var i = 0; i < tooltip.length; i++) {
  tooltip[i].setAttribute("data-tooltip", tooltip[i].childNodes[0].nodeValue);
}

通过JS获取哪些元素需要具备悬停显示气泡效果,并获取其对应展示的提示信息,最后将其赋值给after元素的data-tooltip属性。

三、示例说明

(1) 示例1

下面是以一个链接元素为例子声明的CSS代码,当鼠标悬停在该链接上时,会在链接下方显示一个灰色的气泡,展示链接的URL信息。

<a href="http://github.com" class="tooltip">Github</a>

.tooltip {
  position: relative;
  display: inline-block;
  color: #333;
  text-decoration: none;
  border-bottom: 1px solid #333;
}

.tooltip::before {
  content: "";
  position: absolute;
  bottom: 100%;
  left: 50%;
  margin-bottom: 5px;
  margin-left: -5px;
  border-width: 5px;
  border-style: solid;
  border-color: transparent transparent #ccc transparent;
  opacity: 0;
  transition: opacity 0.3s ease;
}

.tooltip::after {
  content: attr(title);
  position: absolute;
  left: 50%;
  bottom: 100%;
  margin-left: -60px;
  padding: 5px 10px;
  border-radius: 4px;
  background-color: #333;
  color: #fff;
  font-size: 16px;
  text-align: center;
  white-space: nowrap;
  opacity: 0;
  transition: opacity 0.3s ease;
}

(2) 示例2

下面是以一个表单文本框为例子声明的CSS代码,当鼠标悬停在文本框上时,会在文本框右侧显示一个黑色的气泡,展示文本框输入格式的提示信息。

<input type="text" class="tooltip" placeholder="请输入格式为xxxx-xxxx-xxxx的序列号">

.tooltip {
  position: relative;
  display: inline-block;
}

.tooltip::before {
  content: "";
  position: absolute;
  bottom: 100%;
  left: 50%;
  margin-bottom: 5px;
  margin-left: -5px;
  border-width: 5px;
  border-style: solid;
  border-color: transparent transparent #333 transparent;
  opacity: 0;
  transition: opacity 0.3s ease;
}

.tooltip::after {
  content: attr(placeholder);
  position: absolute;
  left: 100%;
  top: 50%;
  margin-top: -15px;
  margin-left: 10px;
  padding: 5px 10px;
  border-radius: 4px;
  background-color: #000;
  color: #fff;
  font-size: 16px;
  text-align: center;
  white-space: nowrap;
  opacity: 0;
  transition: opacity 0.3s ease;
}

四、结束语

通过上述步骤和示例的说明,我们可以看到,利用CSS3可以轻松实现鼠标悬停提示气泡效果。这种效果简洁、优雅、易于维护,同时效果也非常好。希望这篇攻略能对Web开发中的提示信息效果的实现带来些让人惊喜的启发。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:纯CSS3实现鼠标悬停提示气泡效果 - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • Bootstrap3.3.7导航栏下拉菜单鼠标滑过展开效果

    下面是详细讲解“Bootstrap3.3.7导航栏下拉菜单鼠标滑过展开效果”的完整攻略: 准备工作 首先,你需要在HTML文件中引入Bootstrap库: <link rel="stylesheet" href="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/3.3…

    css 2023年6月11日
    00
  • 利用CSS3的transition属性实现滑动效果

    使用CSS3的transition属性可以实现网页中的滑动效果。以下是操作步骤: 第一步:为需要实现滑动效果的元素添加CSS样式 我们假设需要给一个div元素添加滑动效果,现在我们先为这个div元素添加样式: div { width: 100px; height: 100px; background-color: blue; position: relati…

    css 2023年6月9日
    00
  • jquery实现的随机多彩tag标签随机颜色和字号大小效果

    首先,我们需要了解什么是jQuery。jQuery是一种流行的JavaScript库,它可以使在网页上运行的JavaScript代码更加容易和简单。它提供了一系列便捷的API来操作HTML、CSS和DOM等内容,同时具备跨浏览器兼容性、高效性等优点。 针对“jquery实现的随机多彩tag标签随机颜色和字号大小效果”,我们可以采取以下步骤: 1. 创建一个H…

    css 2023年6月9日
    00
  • 暗黑3第三赛季什么时候结束 s3持续时间介绍

    暗黑3第三赛季什么时候结束?s3持续时间介绍 暗黑3第三赛季开始于2021年4月9日,结束于2021年7月18日。因此,第三赛季持续时间为约3个月。 第三赛季简介 第三赛季的主要特点是提高了目标物品掉落的机会和经验增益。此外还引入了新的赛季徽章、赛季限定成就和装饰品。玩家可以通过完成指定的任务和达成特定成就来获得徽章、头像框和翅膀等奖励。 第三赛季结束时间 …

    css 2023年6月10日
    00
  • JavaScript CSS修改学习第二章 样式

    下面是关于JavaScript修改CSS的学习攻略。 一、基础知识回顾 在学习JavaScript修改CSS之前,需要先熟悉一些CSS和JavaScript的基础知识。关于CSS的相关知识,这里不再赘述,如果你还不熟悉CSS的话,可以看一下CSS相关的基础教程。 在JavaScript中修改CSS一般需要使用到以下两个属性: style:表示元素的style…

    css 2023年6月10日
    00
  • 使用 css3 transform 属性来变换背景图的方法

    使用 CSS3 transform 属性可以实现背景图的变换效果,可以用来增强页面的视觉效果。下面是使用 CSS3 transform 变换背景图的方法。 1. 了解 transform 属性 transform 属性是 CSS3 的一个新属性,用来对元素进行 2D 或者 3D 变换。transform 不仅仅可以用在文本和图片上,也可以用在盒子模型上。 t…

    css 2023年6月9日
    00
  • html工作中表格<tbody>标签的使用技巧

    当我们需要在Web页面中展示一些数据时,通常会使用表格(table)进行展示,而<tbody>标签则是定义表格的主体部分。下面是关于<tbody>标签使用技巧的攻略。 1. 什么是<tbody>标签 <tbody>标签用于定义表格的主体部分,通常在<table>标签内部使用。<tbody&gt…

    css 2023年6月10日
    00
  • 几种响应式文字详解

    几种响应式文字详解 在响应式设计中,文字也是一个重要的组成部分。为了让不同大小的屏幕都能正常显示,需要采用一些响应式的文本技巧,下面是几种响应式文字的详细介绍。 1. 使用媒体查询 媒体查询是一种可以根据屏幕宽度等参数来改变样式的代码。在响应式设计中,我们可以利用媒体查询来改变字体的大小和行距等属性,以适应不同屏幕大小。 @media screen and …

    css 2023年6月10日
    00
合作推广
合作推广
分享本页
返回顶部