纯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日

相关文章

  • 浅谈vue项目打包优化策略

    浅谈vue项目打包优化策略 随着JavaScript应用程序变得越来越复杂以及用户对高性能用户体验的需求增加,Vue项目打包优化变得愈发重要。本文将讨论一些可以改进打包应用程序的技术,以便最小化首次加载时间和提高用户的体验。 使用Webpack分析器来检查并清理你的代码 Webpack可以使用许多不同的插件和loader来自动转换和优化代码,但是代码中可能仍…

    css 2023年6月10日
    00
  • 使用CSS的overflow属性防止float撑开div的方法

    当一个父元素包含了浮动的子元素时,若该子元素宽度超出父元素宽度,则会撑开父元素,导致布局混乱。为了解决这个问题,可以使用 CSS 的 overflow 属性来控制子元素的溢出部分。 具体来讲,有以下两种方法可以使用 CSS 的 overflow 属性防止 float 撑开 div。 方法一:使用overflow:hidden 可以通过设置父元素的 overf…

    css 2023年6月10日
    00
  • div布局的自由伸展三栏式版面的代码

    下面我会详细讲解div布局的自由伸展三栏式版面的代码攻略。 1. 页面布局简介 在网页制作中,通常需要进行网页布局。网页布局通过定义网页中元素的位置和大小,来达到页面的美观和实用。而div布局是网页布局中最常用的一种布局方法。 自由伸展三栏式布局是一种比较常见的布局方式,一般将页面分为左、中、右三栏,其中左右两栏宽度固定,中间栏宽度自适应。通过对这些div块…

    css 2023年6月11日
    00
  • CSS的相邻兄弟选择器用法简单讲解

    当我们需要选中文档中一个元素旁边的另一个元素时,就可以使用CSS的相邻兄弟选择器。相邻兄弟选择器用“+”符号表示,是紧跟在某个元素后的第一个指定元素。下面来详细讲解一下相邻兄弟选择器的用法。 语法规则: element1 + element2 element1: 要选择元素的前一个兄弟元素。 +: 选择前一个兄弟元素紧随的下一个兄弟元素。 element2:…

    css 2023年6月9日
    00
  • CSS 网页布局中的图文列表实现代码

    下面我会详细讲解“CSS 网页布局中的图文列表实现代码”的完整攻略。 标题 图文列表的基本实现思路 通过CSS实现图文列表主要涉及两个方面的布局: 图片和文字的横向布局 多个图文列表的纵向布局 下面我将分别讲解这两个方面的实现方式和代码。 图片和文字的横向布局 首先让我们来看一下图片与文字横向布局的示例代码: /* 图片与文字的横向布局 */ .img-te…

    css 2023年6月10日
    00
  • css中间自适应布局的5种解法详解

    在CSS中,实现中间自适应布局是一种常见的需求。以下是五种实现中间自适应布局的方法,包括两个示例说明: 1. 使用flexbox布局 使用flexbox布局是一种简单的方法,可以实现中间自适应布局。可以将左侧和右侧的元素设置为固定宽度,将中间的元素设置为flex-grow属性,以填充剩余的空间。例如: <div class="containe…

    css 2023年5月18日
    00
  • 20款覆盖全面的响应式网站设计工具

    20款覆盖全面的响应式网站设计工具攻略 在选择一个好用的响应式网站设计工具时,以下20款工具可能会给你提供参考和帮助。它们都有自己的特点和优点,可以根据需求进行选择。 1. Adobe XD Adobe XD是由Adobe公司推出的一款免费的交互式设计工具。它可以用于设计用户界面、动画和交互式原型。Adobe XD可以轻松地在不同设备和分辨率下设计您的网站。…

    css 2023年6月10日
    00
  • 收集前端面试题之url、href、src

    为了收集前端面试题之url、href、src,我们需要进行以下步骤: 1. 确定面试题范围 在准备前端面试题之前,我们需要先确定本次面试的范围。这可以包括Web开发的基础知识、JavaScript编程、HTML、CSS以及前端常用的框架和库等。根据范围,我们可以列出与之相关的url、href、src相关的面试题。 2. 查找面试题资源 我们可以在互联网上搜索…

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