CSS3实现提示工具的渐入渐出效果及CSS3动画简介

上一篇文章用CSS3实现了一个提示工具,本文介绍如何利用CSS3实现提示工具以渐入的方式呈现,以渐出的方式消失。

CSS3主要可以通过两个样式来实现动画效果:animation和transition。

其中,animation需要自己定义一组关键帧从而实现动画,例如:

@keyframes fadein {
  from { 
    opacity: 0;
  }
  to { 
    opacity: 1;
	visibility: visible;
  }
}
@keyframes fadeout {
   from { 
      opacity: 1;
	  visibility: visible;
  }
  to {
      opacity: 0;
	  visibility: hidden;
  }
}
.tooltip .tooltiptext {
    visibility: hidden;
    animation:fade 1s infinite;
}
.tooltip:hover .tooltiptext {
    animation: fadein 2s 1;
}

上面的css中fadein和fadeout定义了两组动画关键帧(其中每组关键帧中样式组的名称“from”、“to”其实是可以自己随便写的,只要不违反CSS命名规则即可),每一组关键帧实际上就是一个动画,fadein和fadeout就是动画的名称。完成动画定义后,在需要播放动画的元素的CSS中用样式animation即可播放,它的参数包括要播放的关键组(动画)名称、持续时间和重播次数(infinite表示无限循环播放)。如上面的定义就可以在鼠标进入工具元素区域时让提示文本渐入,鼠标移出工具元素区域时让提示文本渐出。还可以通过“,”分隔在animation样式中播放多个动画。

animation动画可以精确控制动画的关键帧,但是编写CSS比较复杂。在提示工具这个用例中显然没必要弄得这么复杂,因此,可以用自动生成关键帧的transition样式来编写。

在上文中的animation动画中,我们使用了visibility和opacity两个属性来控制tooltiptext的显示与隐藏。这主要是由于visibility样式在hidden和visible之间没有过渡状态,因此,无法通过transition产生平滑渐入渐出式动画,也无法在关键帧组中自己定义出一个中间状态,它只会在到了播放时间时突然出现或者消失,而opacity则从0到1之间有无限个可用的连续值作为中间状态。

使用transition样式来实现tooltiptext的渐入渐出可以按如下方式定义:

.tooltip .tooltiptext {
    visibility: hidden;
	opacity: 0;
	transition: opacity 2s linear,visibility 2s;
}

.tooltip:hover .tooltiptext {
    visibility: visible;
	opacity: 1;
	transition: opacity 2s linear;
}

可以看出来transition比animation的CSS定义要简洁得多,但是与animation对tooltiptext的visibility和opacity的初始定义要求并不严格不同的是,transition则必须要严格定义好tooltiptext的visibility和opacity的初始值。

transition 属性是一个简写属性,用于设置四个单独的过渡属性:

transition-property

//设置过渡动画的CSS属性名,如opacity,也可以用all表示所css有属性

transition-duration

//设置过渡动画完成的时间,单位可以用ms(毫秒)和s(秒)

transition-timing-function

//设置生产关键帧的方式

transition-delay

//设置动画延迟时间,如1s表示延迟1秒后开始过渡动画

其中,transition-timing-function的取值和含义如下:

属性值

描述
ease

默认值。规定缓慢开始,然后快速,再然后缓慢结束的过渡效果。

相当于:cubic-bezier(0.25, 0.1, 0.25, 1) 。

linear

规定从开始到结束速度相同的过渡效果。

相当于:cubic-bezier(0, 0, 1, 1) 。

ease-in

规定缓慢启动的过渡效果。

相当于:cubic-bezier(0.42, 0, 1, 1) 。

ease-out

规定缓慢结束的过渡效果。

相当于:cubic-bezier(0, 0, 0.58, 1) 。

ease-in-out

规定缓慢开始和结束的过渡效果。

相当于:cubic-bezier(0.42, 0, 0.58, 1) 。

cubic-bezier(nnnn)

在三次贝塞尔函数中定义您自己的值。

可能的值是从 0 到 1 的数值。

initial将此属性设置为其默认值。请参阅 initial。
inherit从其父元素继承此属性。请参阅 inherit。

完整演示页面如下:

<!DOCTYPE html>
<html lang="zh">

<head>
	<meta charset="UTF-8">
	<title>tooltip的渐入与渐出</title>
	<style>
		.tooltip {
			position: relative;
			display: inline-block;
			background-color: aqua;
		}

		.tooltip .tooltiptext {
			width: 140%;
			background-color: gray;
			text-align: left;
			text-indent: 2em;
			border-radius: 0.5em;
			padding: 0.2em 0.1em;
			color: #ff0;
			top: 1.5em;
			left: 1em;
			/* 定位 */
			position: absolute;
			z-index: 1;
			/*动画效果*/
			visibility: hidden;
			transition: opacity 2s linear, visibility 2s;
			opacity: 0;
		}

		.tooltip:hover .tooltiptext {
			visibility: visible;
			opacity: 1;
			transition: opacity 2s linear;
		}
	</style>
</head>

<body>
	<div class="tooltip">工具元素
		<span class="tooltiptext">搜索后如有匹配内容高亮,请清空搜索框消除高亮,以免高亮标记被笔记保存。</span>
		<input type="text" placeholder="搜索...">
	</div>
	<span>相邻元素</span><br>
	<div>下方的元素</div>

</body>

</html>

页面效果如下:

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

vue使用x6画流程图,简单使用

官网 https://x6.antv.antgroup.com/tutorial/getting-started 安装 npm install antv/x6 --save 使用 <template><div>3333<div id"container" style"width: 800px;height: 800px;"></div></div> </template> <…

详细分析Springboot自定义启动界面(附Demo)

目录 前言1. banner.text1.1 配置文件关闭1.2 启动类关闭1.3 命令行关闭 2. 自定义Banner类3. 自动配置类4. 总结 前言 实现自定义启动动画是一项有趣的任务&#xff0c;虽然Spring Boot本身不提供内置的动画功能&#xff0c;但可以通过一些技巧来实现 以下主要以Demo的形式展…

Linux系统学习日记——vim操作手册

Vim编辑器是linux下的一个命令行编辑器&#xff0c;类似于我们windows下的记事本。 目录 打开文件 编辑 保存退出 打开文件 打开 hello.c不存在也可以打开&#xff0c;保存时vim会自动创建。 效果 Vim打开时&#xff0c;处于命令模式&#xff0c;即执行命令的模式&#x…

STM32自己从零开始实操:PCB全过程

一、PCB总体分布 以下只能让大家看到各个模块大致分布在板子的哪一块&#xff0c;只能说每个人画都有自己的理由&#xff1a; 电源&#xff1a;从外部接入电源&#xff0c;5V接到中间&#xff0c;向上变成4V供给无线&#xff0c;向下变成3V供给下面的接口&#xff08;也刻意放…

分布式搜索引擎ES-Elasticsearch进阶

1.head与postman基于索引的操作 引入概念&#xff1a; 集群健康&#xff1a; green 所有的主分片和副本分片都正常运行。你的集群是100%可用 yellow 所有的主分片都正常运行&#xff0c;但不是所有的副本分片都正常运行。 red 有主分片没能正常运行。 查询es集群健康状态&…

dd命令参数

GPT-4 (OpenAI) dd 是一个用于在 Unix 和 Unix 类操作系统中转换和复制文件的命令行工具。虽然它的名字听起来可能很简单&#xff0c;但是 dd 拥有很多功能强大的选项。下面列出了一些常见的 dd 参数&#xff08;选项&#xff09;&#xff1a; 1. if<文件名>&#xff…

mysql存储引擎和备份

索引 事务 存储引擎 概念&#xff1a;存储引擎&#xff0c;就是一种数据库存储数据的机制&#xff0c;索引的技巧&#xff0c;锁定水平。 存储引擎。存储的方式和存储的格式。 存储引擎也属于mysql当中的组件&#xff0c;实际上操作的&#xff0c;执行的就是数据的读写I/O。…

【ARM】MDK-解决CMSIS_DAP.DLL missing报错

【更多软件使用问题请点击亿道电子官方网站】 1、 文档目标 记录解决CMSIS_DAP.DLL missing的报错情况&#xff0c;对应相关报错信息&#xff0c;供后续客户参考&#xff0c;快速解决客户问题。 2、 问题场景 客户进行硬件调试时&#xff0c;发现Target设置内有CMSIS_DAP.DL…

趣谈linux操作系统 9 网络系统-读书笔记

文章目录 网络协议栈基础知识回顾网络分层网络分层的目的各层作用简介延伸-ip地址,有类,无类,cidr socket实现分析tcp/udp回顾socket编程回顾TCP编程回顾UDP编程回顾差异 socket相关接口实现浅析sokcet实现解析创建socket的三个参数socket函数定义及其参数创建socket结构体关联…

StarRocks on AWS Graviton3,实现 50% 以上性价比提升

在数据时代&#xff0c;企业拥有前所未有的大量数据资产&#xff0c;但如何从海量数据中发掘价值成为挑战。数据分析凭借强大的分析能力&#xff0c;可从不同维度挖掘数据中蕴含的见解和规律&#xff0c;为企业战略决策提供依据。数据分析在营销、风险管控、产品优化等领域发挥…

8、添加第三方包

目录 1、安装Django Debug Toolbar Django的一个优势就是有丰富的第三方包生态系统。这些由社区开发的包&#xff0c;可以用来快速扩展应用程序的功能集 1、安装Django Debug Toolbar Django Debug Toolbar位于名列前三的第三方包之一 这是一个用于调试Debug Web应用程序的有…

Linux网络:应用层协议HTTP(一)

一、什么是HTTP协议 虽然我们说, 应用层协议是我们程序猿自己定的. 但实际上, 已经有大佬们定义了一些现成的, 又非常好用的应用层协议, 供我们直接参考使用. HTTP(超文本传输协议)就是其中之一。 在互联网世界中&#xff0c;HTTP&#xff08;HyperText Transfer Protocol&…

多口适配器,给您的生活增添便利

随着科技的快速发展&#xff0c;我们的生活已离不开各种各样的电子设备&#xff0c;智能手机、平板电脑、智能手表、无线耳机……它们共同构建了我们丰富多彩的数字生活。然而&#xff0c;面对众多设备的充电需求&#xff0c;传统的单一充电口已难以满足现代人的使用习惯。在这…

完整创建一个vite前端项目

目录 1.先创建一个vite项目 2.下载第三方依赖 ① 安装路由vue-router ② 安装vuex全局数据管理 ③ 安装element-plus ④ 安装element-plus图标 ⑤ 安装axios发送请求 ⑥ 完整main.js代码模板 3.开发组件 4.登陆页面开发用例 5. 完整项目代码 废话少说&#xff0c;直接…

DDei在线设计器-HTML渲染

Html渲染 HtmlViewer插件通过将一个外部DIV附着在图形控件上&#xff0c;从而改变原有图形的显示方式。允许使用者自己定义HTML通过HTML元素。本示例演示了通过Html来扩展渲染图形&#xff0c;从而获得更加丰富的图形展现。 通常情况下&#xff0c;我们创建的图形控件&#xff…

IDEA的工程与模块管理

《IDEA破解、配置、使用技巧与实战教程》系列文章目录 第一章 IDEA破解与HelloWorld的实战编写 第二章 IDEA的详细设置 第三章 IDEA的工程与模块管理 第四章 IDEA的常见代码模板的使用 第五章 IDEA中常用的快捷键 第六章 IDEA的断点调试&#xff08;Debug&#xff09; 第七章 …

STM32项目分享:智能宠物喂食系统

目录 一、前言 二、项目简介 1.功能详解 2.主要器件 三、原理图设计 四、PCB硬件设计 1.PCB图 五、程序设计 六、实验效果 七、资料内容 项目分享 一、前言 项目成品图片&#xff1a; 哔哩哔哩视频链接&#xff1a; https://www.bilibili.com/video/BV1zy411z7…

【STL专题】模拟实现std::string,深入解析内部实现机制:从大小到运算符重载的探索之旅【万字详解】

欢迎来到 CILMY23的博客 &#x1f3c6;本篇主题为&#xff1a;模拟实现std::string&#xff0c;深入解析内部实现机制&#xff1a;从大小到运算符重载的探索之旅【万字详解】 &#x1f3c6;个人主页&#xff1a;CILMY23-CSDN博客 &#x1f3c6;系列专栏&#xff1a;Python |…

使用 PVE 自签 CA 证书签发新证书

前言 PVE 安装时会自动创建一个有效期 10 年的 CA 证书, 我们可以利用这个 CA 证书给虚拟机中的 Web 应用签发新的 TLS 证书用于提供 HTTPS 服务. 下面以 PVE 虚拟机中通过 Docker 跑的一个 雷池 应用为例进行演示. PVE 证书位置 官方文档: https://pve.proxmox.com/wiki/Pr…

python-多任务编程

2. 多任务编程 2.1 多任务概述 多任务 即操作系统中可以同时运行多个任务。比如我们可以同时挂着qq&#xff0c;听音乐&#xff0c;同时上网浏览网页。这是我们看得到的任务&#xff0c;在系统中还有很多系统任务在执行,现在的操作系统基本都是多任务操作系统&#xff0c;具备…