CSS3——@keyframe动画的基本用法,常见错误及解决方案

2023-11-10

一、基本用法

CSS3 动画
动画:指定一组或多组成套的动作,按照指定时间,指定的方式自动完成。
h5中动画的运用效率要高于使用js来体现动画效果,因为动画是渲染式的。

1.关键帧@keyframes

@keyframes 通过在动画序列中定义关键帧的样式,来控制CSS动画序列中的步骤。

使用 @keyframes 可以创建动画。
在动画过程中,您可以更改CSS样式的设定多次。
指定的变化时发生时使用%,或关键字“from”和“to”,等价于0%到100%
0%是开头动画,100%是当动画完成。

 @keyframes mycolor {
    0% { background-color: red; }
    30% { background-color: darkblue; }
    50% { background-color: yellow; }
    70% { background-color: darkblue; }
    100% { background-color: red; }
  }

1) animation-name:动画名称 指定了一个 @keyframes 动画,指定要使用哪一个关键帧。
2) animation-duration:动画持续时间 定义动画完成一个周期需要多少秒或毫秒。
3) animation-timing-function:动画的运动方式 指定动画将如何完成一个周期

  ease;默认
  ease-in;  
  ease-out;
  ease-in-out;
  linear;
  steps(数值, 定位) 定位:start/end 默认end指逐步运动

4) animation-delay:动画的延迟时间 动画什么时候开始。
5) animation-iteration-count:动画循环次数 动画应该播放多少次,默认1
其值为:n(一个数字,指定播放多少次)、infinite(指定播放无限次)、

6)animation-fill-mode:结束状态 设置动画结束时盒子的状态

  forwards 保持动画结束后的状态
  backwards 动画结束后回到最初的状态

7) animation-direction:动画的执行顺序 动画是否应该播放完后逆向交替循环(对设置了多次播放的动画有效)
其值为:normal(默认值,动画正常)、reverse 反向、alternate(动画交替循环逆向运动)

8) 简写方式
animation: 动画执行时间 延迟时间 执行关键帧名称 运动方式 运动次数 结束状态 动画执行顺序;

最简方式
animation: 动画执行时间 执行关键帧名称; 执行时间和延迟时间顺序不可调整

2.示例

播放两次时长为5s的变色(红->黄->绿->h红)动画,结束。

<!DOCTYPE html>
<html>
<head>
<meta charset = "utf-8">
<style>
div { 
	width: 200px;
	height: 200px;
	background: red;
}
@keyframes mycolor {
	0% { background-color: red; }
	30% { background-color: yellow; }
	60% { background-color: green; }
	100% { background-color: red; }
}
div:hover {
	animation-name: mycolor;
	animation-duration: 5s;
	animation-timing-function: linear;
	animation-iteration-count: 2;
}
</style>
</head>
<body>
 	<div></div>
</body>
</html>

二、常见错误及解决方案

(1)@keyframes 不能实现突变的状态变化

@keyframes原理把样式的从一个状态,慢慢转变为另一个状态。

所以,如果不存在渐变的状态,是无法用@keyframes构成动画的,例如:

div {
    animation: appear 2s;
}
@keyframes appear {
    from { display:none; }
    to   { display:block;}
}

display:none;是将div消失并且不占空间,display:block;则是将div展现存在并占据空间。
但是 display:none;和display:block;是突变的 ,所以@keyframes无法实现。

同理其他种类的突变属性也无法拥有@keyframes的动画效果,@keyframes 只存在于渐变属性当中,例如各种width, height, opacity等属性值为数值的属性。

display替代方案

1.占据空间:visiblity

@keyframes appear {
	100% { 
		opacity: 1;
		visibility: visible;
	}
	100% { 
		opacity: 0;
		visibility: hidden;
	}
}

2.不想占据空间:绝对定位+visiblity

使用绝对定位使元素脱离文档流,搭配z-index控制层叠关系使它出现或者消失。

//自身css效果
.animate {
    position: absolute;
    top: 0;
    left: 0;

    transition: 1s;
    opacity: 0;
    visibility: hidden;
    z-index: 0;
}

//出现时的效果
.cur {
    opacity: 1;
    visibility: visible;
    z-index: 10;
}

3.消失前占据空间但是消失后不占据空间:timeout和visiblity

(2)@keyframes会增添/覆盖属性

/*
* div 在2s内下移200px
*/
div {
    position:absolute;
    top:0px;
    animation: move 2s;
}
@keyframes move {
    from { top:20px; }
    to   { top:200px;}
}

此例中,div初始状态是top:0;
@keyframes首先用top:20px覆盖原属性(top:0;),然后再启动@keyframes功能。

结果:div突然瞬间下降20px,然后在2秒内下降至指定位置(top:200px;)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CSS3——@keyframe动画的基本用法,常见错误及解决方案 的相关文章

  • css如何设置背景颜色透明?css设置背景颜色透明度的两种方法介绍

    在网页布局中有时为了网页的整体美观 可能需要将网页中的某些部分设置为背景颜色透明 那么如何设置背景颜色透明呢 本篇文章就来给大家介绍一下css设置背景颜色透明的方法 在css中设置背景颜色透明的方法有两种 一种是通过rgba方式设置 另一种
  • 提交表单--get与post方式

    我们经常在网页上输入信息 然后通过按钮提交 有两种提交方式 get和post get方式效率高但安全性低 post是封装后进行提交安全性高 get方式经常用于搜索 查询 post常用与用户注册登陆等 提交表单标签
  • 更改element button 按钮颜色

    在全局的index scss里面改 显示时按钮样式 el button inblack 需要更改的按钮类型 background 060606 important border color 060606 important color ff
  • 随手写系列——写一个凯撒密码转换页面

    文章目录 先展示效果 H5编写 C3编写 JS编写 方法一 过程版 JS编写 方法二 对象版 代码获取 先展示效果 因为主要是实现功能 所以CSS写的很粗糙 H5编写 基础结构如下 先构成最外面的大盒子 box 然后 inner gt p装
  • css中float用法

    float浮动 指将指定元素悬浮于所在整体之上 即将垂直排列的元素转换为水平同行显示 平时写出的HTML是具有先后顺序的 对于这个顺序我们称之为标准流 而浮动则是脱离标准流的另一个独立标准 下面给出float定义 float left 左浮
  • Element Dialog水平垂直居中样式

    前言 Element UI 是目前最火的前端Vue js UI组件库 但是Dialog默认样式并不是水平垂直居中 这就很让人很尴尬 不过对于有水平垂直居中的需求来说 我们是可以自己进行调整的 最常用的方法也试过了 最终得到以下方法是最佳的
  • CSS 实现不规则元素的阴影

    大伙在工作中 尤其写页面样式 相信很多地方用到 box shadow 阴影属性 但是这个属性只能用到规则的元素上 亦或者说只能用到一个元素上 那当我们遇到不规则的元素时 想加阴影就比较棘手了 但是 CSS 提供了此问题的解决方案 今天 我们
  • 如何等待元素包含属性 style="display:none;"使用 Selenium 和 Python

    使用 Selenium Python 时 我需要等待 暂停直到 style display none 显示为 div div div gt 单击按钮后 将显示以下内容 加载中 div class notification info styl
  • 如何在 MPEG-2 流中查找关键帧(打包在 MPEG-TS 中)

    我写了 MPEG TS 解复用器 它将传输流解包为 PES 数据包 现在我想删除所有帧直到遇到关键帧 我该怎么做 我应该在每个 PES 帧中查找 Sequence 块吗 您应该能够在MPEG TS适配领域 http en wikipedia
  • Excel 列表框仅显示当前日期输入的条目

    我想请求您帮助仅显示当前日期的列表框条目 我这里有一个示例 其中包含先前日期输入的条目以及今天日期的条目 每次我输入另一个条目时 之前日期的条目仍然会显示 所以我想实现的是 当我今天输入另一种颜色时 我将看到今天输入的颜色 不包括之前日期输
  • 我可以在 OpenGL 中使用不同的多 GPU 吗?

    我读到OpenGL 多 GPU 支持 https stackoverflow com questions 43811699 opengl multi gpu support 我目前使用的是支持 OpenGL 4 5 的 NVIDIA 卡 我
  • WPF - 动画图像源更改

    我对 WPF 还很陌生 但我认为我需要做的事情相对简单 我需要创建一个图像 动画 其中我每 0 25 秒更改一次图像源 我有一个名为 animation 的文件夹 其中包含 1 到 25 png 实时图像 名为 1 png 2 png 25
  • 以编程方式旋转显示器?

    我正在寻找一种以编程方式旋转其中一台显示器的显示的方法 我在桌面上安装了两台显示器 在编程或使用各种其他程序时 我经常以不同的方向使用它们 为了改变方向 我跳入显示设置并以这种方式旋转它 这样我就可以有一个或两者都是纵向 可以说我很懒 因为
  • 在循环中使用 CSS 实现图像之间的交叉淡入淡出

    我想在循环中的图像之间淡入淡出 就像这里的结果 jsfiddle net 5M2PD http jsfiddle net 5M2PD 但纯粹是通过CSS no JavaScript 我尝试使用关键帧但没有成功 请帮忙 keyframes c
  • VBA 用户窗体:相同字体大小的文本根据 Top 属性更改大小

    我有一个用户表单 在多个不同控件的多种情况下 我观 察到具有相同宽度 高度 字体和字体大小的对象显示不同的字体大小 具体取决于它们在用户窗体上的放置位置 上面是一个例子 这两个文本框的宽度均为 26H 和 48W Left 为 90 两者的
  • css3 关键帧动画的 SASS(不是 SCSS)语法

    有没有办法在SASS中写入关键帧 我发现的每个例子实际上都是 SCSS 即使它说它是 SASS 需要明确的是 我的意思是没有大括号的 以下是如何在 Sass 语法中实现 css 关键帧 keyframes name of animation
  • FFMPEG读取关键帧

    我正在尝试编写一个 C 程序 该程序将使用 ffmpeg 从视频文件中读取关键帧 到目前为止 我设法使用所有框架av read frame你按顺序阅读的地方 一帧一帧 但我在使用时遇到一些问题av seek frame这 如果我是正确的 应
  • 如何使用CSS仅在移动设备上显示文本?

    我有一个文本 在 div 中 显示在桌面和移动屏幕上 Expected 我希望文本仅显示在 media only screen and max width 768px How to 隐藏 div 与display none or 还有其他解
  • .External2(C_dataviewer, x, title) 中的错误:无法启动数据查看器

    在 R 中 每次点击时都会出现以下错误View or data frame我不明白为什么 事情发生得很突然 gt View Fhat all Error in External2 C dataviewer x title unable to
  • 关键帧 CSS 动画覆盖悬停过渡

    恐怕也有类似的问题 但我没有找到具体的解决方案 所以我创建了一个小提琴 http jsfiddle net Garavani yrnjaf69 2 http jsfiddle net Garavani yrnjaf69 2 div clas

随机推荐

  • ChatGPT开源系列

    目录 进化树 从GPT 4 可以看出未来 LLM 的哪些趋势 未来的研发方向和优化策略是什么 模型 Stanford Alpaca 可以借鉴的点 llama cpp 验证阶段已完成 nebullvm chatllama 待定 可以借鉴的点
  • sql注入的分类总结

    前言 之前对联合查询 报错注入 布尔盲注 延迟注入 对这几种类型模糊不定 我也查阅了一些资料 做了一点总结 希望对大家有帮助 对于SELECT语句 我们通常分其为两种情况 有回显和无回显 有回显 什么是有回显 我们举个例子当我们看到一个ur
  • typedef struct语法解释

    C语言源代码 typedef char datatype typedef struct node datatype data struct node lchild rchild bintnode typedef bintnode bintr
  • Pytest系列-快速入门和基础讲解(1)

    前言 目前有两种纯测试的测试框架 pytest和unittest unittest应该是广为人知 而且也是老框架了 很多人都用来做自动化 无论是UI还是接口 pytest是基于unittest开发的另一款更高级更好用的单元测试框架 单元测试
  • 上最简单的SpringCloud教程

    上一篇文章 讲述了如何通过RestTemplate Ribbon去消费服务 这篇文章主要讲述如何通过Feign去消费服务 一 Feign简介 Feign是一个声明式的伪Http客户端 它使得写Http客户端变得更简单 使用Feign 只需要
  • elementui中的表格实现无限滚动

    背景 找了很多资料 发现elementui中的表格需要实现无限滚动 需要下载一个插件 然后再结合elementui中的无限滚动的属性一起搭配使用 才能有实现完整的功能 在目前网上 我没有看到实现完整功能的博客文章 于是 我在结合他们的方法
  • 宏观经济学笔记

    最近在网上买了一套关于宏观经济学的简短课程 后面将课程笔记会一起放在这儿上面 今天暂时占坑
  • 射频与微波测量之S参数

    S参数 S散射也叫散射参数 是微波传输中的一组重要参数 由于我们很难在高频率时测量电流或电压 因此我们要测量散射参数或 S 参数 这些参数用来表征RF 元件或网络的电气属性或性能 与我们熟悉的测量 如增益 损耗和反射系数 有关 如上图为二端
  • [OpenAirInterface实战-10] :OAI nFAPI的软件组织结构和软件协议栈架构

    作者主页 文火冰糖的硅基工坊 文火冰糖 王文兵 的博客 文火冰糖的硅基工坊 CSDN博客 本文网址 OpenAirInterface实战 10 nFAPI的软件组织结构和软件协议栈架构 文火冰糖 王文兵 的博客 CSDN博客 目录 第1章
  • 6种微服务RPC框架,你知道几个?

    6种微服务RPC框架 你知道几个 开源 RPC 框架有哪些呢 一类是跟某种特定语言平台绑定的 另一类是与语言无关即跨语言平台的 跟语言平台绑定的开源 RPC 框架主要有下面几种 Dubbo 国内最早开源的 RPC 框架 由阿里巴巴公司开发并
  • ubuntu下opencv和opencv_contrib编译

    第一次编译之后 测试opencv example不成功 又重新卸载了再装了一次 成功了 简单记录一下 下载opencv4 6以及opencv contrib 4 6 0 opencv下载地址github opencv contrib下载地址
  • 浅析epoll – epoll函数深入讲解

    http www cppfans org 1418 html 前一篇大致讲了一下epoll是个什么东西 优点等内容 这篇延续上一篇的内容 主要是分析epoll的函数 epoll高性能的深入分析 epoll的三大函数 1 创建epoll fd
  • UDP组播调试(使用TCP&UDP调试工具)

    如何使用调试工具进行UDP组播调试 一 下载UDP TCP调试工具 二 双击打开调试工具并建立端口 2 1 创建组播客户端1 类型 UDP 组播模式 目标IP 225 0 0 20 端口 60000 本机端口制定 60002 点击 创建 按
  • CVPR‘2023

    Paper https arxiv org pdf 2206 02066 pdf Code https github com XuJiacong PIDNet 导读 本文介绍了一种名为PIDNet的实时语义分割网络架构 虽然传统的双分支网络
  • Camera-memory内存泄漏分析(一)

    Camera有很多涉及算法的场景 而且每个场景里面buffer的创建与释放也总是有着跟随其算法的特定规律 在这些过程中总会不可避免的出现一些内存泄漏的相关问题需要我们进行分析 本文及以后的几篇文章就对这些算法流程及memory变化定位问题堆
  • 【高翔视觉SLAM14讲】由于opencv4版本问题所遇到的那些事的解决办法

    此教程使用与 高翔视觉SLAM14讲 配套源码 主要是解决 高翔视觉SLAM14讲 配套源码中使用Opencv3与Opencv4的一些差异 目录 ch7章问题 总结也是省流 ch7章问题 CmakeLists txt中 find packa
  • C#文件下载四种方法

    从CSDN论坛上看到这个帖子 http topic csdn net u 20120822 10 d8115bb7 2f2a 4c2f b0c1 aab68bcb1e3e html 出于对C 功能的好奇 想那个工程试看看 一 过程 1 建C
  • idea插件--java类实体vo转json串(POJO to JSON)

    安装POJO to JSON插件 1 打开idea 右键选择File setting Plugins 输入POJO to JSON 选择安装后重启idea Invalidate and Restart vo转换JSON操作 Data pub
  • 连续型随机变量的分布(均匀分布、指数分布、正态分布)

    一 均匀分布 均匀分布是指在一个区间内各个数值出现的概率相等的一种随机分布 均匀 这一概念可以理解为 在任何子区间上 变量的取值概率相等 它的概率密度函数为 其中 a和b分别为区间的上下限 均匀分布的特点是 它的概率密度函数为常数 即该分布
  • CSS3——@keyframe动画的基本用法,常见错误及解决方案

    文章目录 一 基本用法 1 关键帧 keyframes 2 示例 二 常见错误及解决方案 1 keyframes 不能实现突变的状态变化 display替代方案 1 占据空间 visiblity 2 不想占据空间 绝对定位 visiblit