CSS从入门到精通——动画:CSS3动画执行次数和逆向播放

目录

任务描述

相关知识

动画执行次数

动画反向播放

编程要求

任务描述

本关任务:用 CSS3 实现loading效果。效果图如下:

相关知识

为了完成本关任务,你需要掌握:1.动画执行次数,2.动画反向播放。

需要实现的效果如下:

动画执行次数

动画从开始到结束(0%100%)称为一个动画的周期,也就是说,动画执行了一次。

基本的结构如下(这里省略了部分样式):

<div class="box">
    <span>0%</span>
    <span>100%</span>
</div>
.box{ width: 0px;}

效果图如下:

先创建一个动画名称为progress的动画。代码如下:

@keyframes progress{
  0% { width: 0px; }
  100%{ width: 300px; }
}

然后把这个动画绑定到class="box"元素上就可以了。代码如下:

.box{
   animation: progress 2s ease;
}

效果图如下:

可以看出,这里动画只执行了一次。如何让它执行多次呢?这里用到animation-iteration-count属性,它的值有:

  • n, 表示动画播放次数的数值;
  • infinite,表示动画无限次播放;

这里先执行3次,代码如下:

.box{
   animation: progress 2s ease 3;
}

效果如下:

动画反向播放

上面进度条从100%0%时是直接消失的,怎么让它逐渐消失呢?

第一种思路:把从0%100%100%0%看作动画的一个周期。这时总完成时间就会翻倍

实现代码如下:

@keyframes progress{
  0% { width: 0px;}
  50%{ width: 300px;}
  100%{ width: 0px;}
}
.box{
  animation: progress 4s ease;
}

效果如下:

因为这里的动画比较简单,这样写没什么问题。但动画效果比较复杂时,需要计算的东西就比较多了,也比较麻烦。

第二种思路:利用属性animation-direction,它规定了动画是否在下一周期逆向播放。它的值有:

  • normal,默认值,表示正常播放;
  • reverse,表示动画反向播放;
  • alternate,动画在奇数次(1、3、5...)正向播放,在偶数次(2、4、6...)反向播放;

可以利用animation-direction: alternate; 让动画第二次反向播放。

实现代码如下:

.box{
  animation: progress 2s ease 3 alternate;
}

效果如下:

注意:alternate这个值在 动画次数≥2 的时候才有效果;

编程要求

根据提示,在右侧编辑器补充代码,实现loading效果。要求如下:

  • 动画名称为loading
  • 动画一次完成的时间:外面的为1s,里面的为1.5s
  • 动画的速度曲线为linear;
  • 动画完成的次数为 无限次;
  • 外面的顺时针旋转,里面的逆时针旋转;

提示:

  • animation-direction: reverse;可以实现动画反向播放;
  • 注意动画简写的顺序;

为了方便评测, CSS 都是需要以分号;结尾的。

效果如下:

<!doctype html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document
	</title>
	<style>
     *{
     	margin: 0;
     	padding: 0;
     }
     @keyframes loading{
     	0%{ transform: rotate(0deg); }
     	100%{ transform: rotate(360deg); }
     }
     .box{
     	position: relative;
     	width: 100%;
     	height: auto;
     	background: black;
     }
     .big{
     	width: 40px;
     	height: 40px;
     	border: 5px solid red;
     	border-radius: 50%;
     	border-color: red red transparent transparent;
     	position: absolute;
        left: 100px;
        top: 100px;
        /************ Begin **************/
         animation:loading 1s linear infinite;
         
        /************* End ***************/
     }
     .small{
     	width: 20px;
     	height: 20px;
     	border: 5px solid red;
     	border-radius: 50%;
     	border-color: transparent transparent red red;
     	position: absolute;
     	left: 110px;
     	top: 110px;
        /************ Begin **************/

             animation:loading 1.5s linear infinite reverse;

         
        /************* End ***************/
     }
     
	</style>
</head>
<body>
    <div class="box">
    	<div class="big"></div>
    	<div class="small"></div>
    </div>
</body>
</html>

 

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

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

相关文章

每天五分钟深度学习框架pytorch:多维tensor向量在某一维度的拼接和分割

本文重点 在深度学习中,我们常常需要完成多个向量拼接,同时也要完成向量的分割,在pytorch中已经有封装好的库,我们可以直接调用完成这部分任务。 Cat拼接 c=torch.cat([a,b],dim=0)表示将a和b按0维度进行拼接,需要注意再非dim维度,两个矩阵的维度必须是一致的,不然会拼…

docker拉取镜像一直在加载中,且会提示error pulling image configuration

1、增加国内镜像配置 #查看文件内容 sudo vim /etc/docker/daemon.json如果没有该文件&#xff0c;则需要在/etc/docker中创建一个daemon.json 文件 创建文件 vim daemon.json#文件中添加以下json {"registry-mirrors":["https://docker.mirrors.ustc.edu.cn/…

小工具开发

因不太喜欢重复性工作&#xff0c;为了提高日常工作效率&#xff0c;在业余时间开发一些小工具用于帮助自己“偷懒”。 小工具功能&#xff1a; 1、Hightec编译的hex文件&#xff0c;与多模式标定hex文件合成 2、Bootloader文件&#xff0c;Hightec编译的hex文件&#xff0c;与…

SpringMVC框架学习笔记(八):自定义拦截器和异常处理

1 自定义拦截器 1.1 什么是拦截器 1.1.1 说明 &#xff08;1&#xff09;Spring MVC 也可以使用拦截器对请求进行拦截处理&#xff0c;用户可以自定义拦截器来实现特定 的功能. &#xff08;2&#xff09;自定义的拦截器必须实现 HandlerInterceptor 接口 1.1.2 自定义拦截…

ssh的远程连接(Linux篇)

这里用到的虚拟机时centos7 记得提前先把网络连接好&#xff0c;这里选择的是桥接模式 1.启动ssh服务 # 在centos中启动sshd服务 sudo systemctl start sshd 2.在windows的cmd命令界面内输入以下内容 # ssh centos中的登录用户名centos中的IP地址 ssh yl192.168.1.108 然后…

Python 基础:类

目录 一、类的概念二、定义类三、创建对象并进行访问四、修改属性的值方法一&#xff1a;句点表示法直接访问并修改方法二&#xff1a;通过方法进行修改 五、继承继承父类属性和方法重写父类方法 六、将实例用作属性七、导入类导入单个类从一个模块中导入多个类导入整个模块导入…

效果超越ControlNet+IP-Adapter和FreeControl!Ctrl-X:可控文生图新框架(加州大学英伟达)

文章链接&#xff1a;https://arxiv.org/pdf/2406.07540 项目链接&#xff1a;https://genforce.github.io/ctrl-x/ 最近的可控生成方法&#xff0c;如FreeControl和Diffusion Self-guidance&#xff0c;为文本到图像&#xff08;T2I&#xff09;扩散模型带来了细粒度的空间…

机器学习(V)--无监督学习(一)聚类

根据训练样本中是否包含标签信息&#xff0c;机器学习可以分为监督学习和无监督学习。聚类算法是典型的无监督学习&#xff0c;目的是想将那些相似的样本尽可能聚在一起&#xff0c;不相似的样本尽可能分开。 相似度或距离 聚类的核心概念是相似度(similarity)或距离(distance…

模板方法模式和命令模式

文章目录 模板方法模式1.引出模板模式1.豆浆制作问题2.基本介绍3.原理类图 2.豆浆制作代码实现1.类图2.SoyaMilk.java 豆浆的抽象类3.PeanutSoyaMilk.java 花生豆浆4.RedBeanSoyaMilk.java 红豆豆浆5.Client.java6.结果 3.钩子方法1.基本介绍2.代码实现1.SoyaMilk.java 添加钩子…

数据中台-知识图谱平台

【数据分析小兵】专注数据中台产品领域,覆盖开发套件,包含数据集成、数据建模、数据开发、数据服务、数据可视化、数据治理相关产品以及相关行业的技术方案的分享。对数据中台产品想要体验、做二次开发、关注方案资料、做技术交流的朋友们&#xff0c;可以关注我。 1. 概述 随着…

弗洛伊德算法——C语言

弗洛伊德算法&#xff0c;是一种用于解决所有顶点对之间最短路径问题的经典算法&#xff0c;该算法通过动态规划的方法计算出从每个顶点到其他所有顶点的最短路径。 弗洛伊德算法的基本思想是逐步考虑每一个顶点作为中间点&#xff0c;更新所有顶点对之间的最短路径。它通过以…

开源模型应用落地-LangChain高阶-LCEL-表达式语言(七)

一、前言 尽管现在的大语言模型已经非常强大&#xff0c;可以解决许多问题&#xff0c;但在处理复杂情况时&#xff0c;仍然需要进行多个步骤或整合不同的流程才能达到最终的目标。然而&#xff0c;现在可以利用langchain来使得模型的应用变得更加直接和简单。 LCEL是什么&…

STM32CubeMX配置-RTC周期唤醒

一、简介 MCU为STM32G070&#xff0c;采用内部时钟32KHZ&#xff0c;配置为周期6s唤醒&#xff0c;调用回调函数&#xff0c;进行喂狗操作。 二、配置 初始时间、日期、周期唤醒时间配置。 开启周期唤醒中断 三、生成代码 调用回调函数&#xff0c;进行喂狗操作。 //RTC唤醒回…

vue-i18n使用步骤详解(含完整操作步骤)

开篇 下面是从创建vue项目开始&#xff0c;完整使用i18n实现国际化功能的步骤&#xff0c;希望对您有所帮助。 完整步骤 创建项目 创建项目&#xff0c;并在创建项目的时候选择vuex,router 选择3.x版本 后面随意选即可&#xff0c;下面是完整的代码结构 安装vue-i18n,并封装…

数据库事务隔离级别

前几天项目上合作公司的系统出现了一次死锁&#xff0c;突然想到由于近几年开发设计的系统并发用户比较少&#xff0c;很久没有碰到过死锁了&#xff0c;因此对死锁的概念也比较生疏了&#xff0c;需要温习一下。 事务 先从最基本的概念开始&#xff0c;事务、及其ACID特性。…

牛客热题:最长上升子序列(一)

&#x1f4df;作者主页&#xff1a;慢热的陕西人 &#x1f334;专栏链接&#xff1a;力扣刷题日记 &#x1f4e3;欢迎各位大佬&#x1f44d;点赞&#x1f525;关注&#x1f693;收藏&#xff0c;&#x1f349;留言 文章目录 牛客热题&#xff1a;最长上升子序列(一)题目链接方法…

浅谈赚钱的四个级别,你在哪一层呢

一谈到赚钱&#xff0c;很多人都会扯到&#xff1a;智商、情商、人脉、资源、背景等等&#xff0c;类似“小钱靠勤&#xff0c;中钱靠智&#xff0c;大钱靠德”这样的经典语录都会脱口而出&#xff0c;其实从本质上来讲&#xff0c;都没有错&#xff0c;但这样的说法太缥缈&…

基于CPS-SPWM链式STATCOM系统在电压不平衡环境下控制策略的simulink建模与仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 5.完整工程文件 1.课题概述 基于CPS-SPWM链式STATCOM系统在电压不平衡环境下控制策略的simulink建模与仿真。利用电压外环PI调节器得到有功 电流指令值结合由负载侧电流检测 到 的无功 电流指令值 &#…

element-plus表单组件之自动补全组件el-autocomplete和级联选择器组件el-cascader

el-autocomplete 自动补全组件 自补全组件的功能和可以根据输入过滤的el-select组件有些类似。 fetch-suggestions 根据输入框的输入获取建议的内容&#xff0c;其接受值是一个函数&#xff0c;有2个参数&#xff0c;querystring:输入的内容&#xff0c;callback内置函数&…

C 语言连接MySQL 数据库

前提条件 本机安装MySQL 8 数据库 整体步骤 第一步&#xff1a;开启Windows 子系统安装Ubuntu 22.04.4&#xff0c;安装MySQL 数据库第三方库执行 如下命令&#xff1a; sudo aptitude install libmysqlclient-dev wz2012LAPTOP-8R0KHL88:/mnt/e/vsCode/cpro$ sudo aptit…