CSS基础笔记-02动画

CSS基础笔记系列

  • 《CSS基础笔记-01CSS概述》

什么是动画

动画是一种综合艺术,它集合了绘画、电影、数字媒体、摄影、音乐、文学等多种艺术门类于一身。具体来说,动画是通过在连续多格的胶片上拍摄一系列单个画面,然后连续播放,产生动态视觉的艺术和技术。

动画的英文有很多表述,如animation、cartoon、animated cartoon、cameracature等。其中较正式的“Animation”一词源自于拉丁文字根anima,意思为“灵魂”,动词animate是“赋予生命”的意思,引申为使某物活起来的意思。

因此,动画可以理解为使用绘画的手法,创造生命运动的艺术。动画技术较规范的定义是采用逐帧拍摄对象并连续播放而形成运动的影像技术。

在CSS中,动画可以通过@keyframes规则来定义。可以使用@keyframes规则来创建动画,并在特定时间点定义动画的帧。这些帧描述了元素从一种样式逐渐变化为另一种样式的效果。

CSS动画的工作原理

CSS动画的工作原理:

  1. 定义动画;如,动画的名称、持续时间、播放次数等属性。可以使用animation属性进行设置。
  2. 创建关键帧;通过@keyframes规则,可以定义一系列关键帧,描述元素在不同时间点的样式。
  3. 应用动画;将定义好的动画应用到元素上。通过将动画名称作为属性值,将其应用到元素的animation属性中。
  4. 浏览器渲染:浏览器接收到CSS样式后,会根据定义的动画和关键帧计算出动画过程中的每一帧,并将这些帧连续播放,形成动画效果。

动画属性(animation)

To create a CSS animation sequence, you style the element you want to animate with the animationproperty or its sub-properties. This lets you configure the timing, duration, and other details of how the animation sequence should progress. This does not configure the actual appearance of the animation, which is done using the @keyframes at-rule as described in the Defining animation sequence using keyframes.

animation常用的子属性如下:

  1. animation-name:指定关键帧规则的name。
  2. animation-delay:设置动画延迟时间。
  3. animation-timing-function:设置动画速度,即通过建立加速度曲线,设置动画在关键帧之间是如何变化。
  4. animation-iteration-count:设置动画重复执行次数。
  5. animation-direction:设置动画是否往返,normal为不执行往返,alternate为执行往返。
  6. animation-play-state:控制动画是否执行或暂停。
p {animation-duration: 3s;animation-name: rightToLeft;
}

关键帧规则

关键帧定义了动画过程中元素状态的实际变化效果。通过 @keyframes rule在动画序列中定义关键帧的样式来控制CSS 动画序列中的中间状态,从而呈现出视觉上的动画效果。

语法

@keyframes <keyframes-name> { <qualified-rule-list> 
}<qualified-rule-list>:<percentage>{property: value}

例如,

@keyframes slidein {from {margin-left: 100%;width: 300%;}to {margin-left: 0%;width: 100%;}
}

要使用关键帧,先创建一个带名称的 @keyframes 规则,以便后续使用 animation-name 属性将动画同其关键帧声明匹配。每个 @keyframes 规则包含多个关键帧,也就是一段样式块语句,每个关键帧由一个百分比值作为名称,代表在动画进行中,在哪个阶段触发这个帧所包含的样式。可以按任意顺序列出关键帧百分比,它们将按照其应该发生的顺序来处理。

关键帧可以使用百分比或关键词“from”和“to”来表示时间点。“from”等价于0%表示起始帧,“to”等价于“100%”表示结束帧。

实现动画

一旦完成动画的时间设置,接下来就需要定义动画的具体表现。通过使用@keyframes建立两个或两个以上关键帧来实现。每一个关键帧都描述了动画元素在给定的时间点上应该如何渲染。

示例1

实现一个文字颜色动态变化的效果。(基于《CSS基础笔记-01CSS概述》的代码)

/* 元素选择器,即直接匹配 HTML 元素的选择器。 */
h1 {color: red;
}/* 用逗号将不同选择器隔开,即可一次使用多个选择器 */
p,li {color: green;
}/* 去除list bullets */
li {/* list-style-type: none; *//* list-style-type: space-counter; *//* list-style-type: kannada;r */list-style-type: "\1F44D";
}p {  animation-name: colorChange;  animation-duration: 4s;animation-iteration-count:infinite;
}@keyframes colorChange {  0% {color: red;}50% {color: green;}100% {color: blue;}
}
<!doctype html>
<html lang="en"><head><meta charset="utf-8" /><title>Tao Te Ching</title><link rel="stylesheet" href="styles.css" /></head><body><h1>第一章(论道)</h1><p style="white-space: pre-line;">道可道,非常道;名可名,非常名。 无,名天地之始;有,名万物之母; 故常无,欲以观其妙;常有,欲以观其徼。 此两者,同出而异名,同谓之玄。玄之又玄,众妙之门。</p><ul><li>第二章</li><li>第三章</li><li>第四章</li><li>第五章</li></ul></body>
</html>

动画效果

css_flicker

示例2

实现一个滑入的效果。

p {  animation-name: colorChange;  animation-duration: 4s;animation-iteration-count:infinite;
}@keyframes colorChange {  0% {color: red;}50% {color: green;}100% {color: blue;}
}

动画效果

css_slidein

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

七牛云cdn图片加载错误:net::ERR_HTTP2_PROTOCOL_ERROR与HTTP2 检测工具

一、问题描述 今天运营的小伙伴提了个问题&#xff0c;她在后台上传图片的时候有时会遇到上传成功了&#xff0c;但实际回显图片却是一张“破图”&#xff1a; 二、原因调查 先了解一下ERR_HTTP2_PROTOCOL_ERROR是什么意思&#xff1a; ERR_HTTP2_PROTOCOL_ERROR是由HTTP/2协…

【AI视野·今日NLP 自然语言处理论文速览 第六十八期】Tue, 2 Jan 2024

AI视野今日CS.NLP 自然语言处理论文速览 Tue, 2 Jan 2024 Totally 48 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Computation and Language Papers A Computational Framework for Behavioral Assessment of LLM Therapists Authors Yu Ying Chiu, Ashish Shar…

HDU - 2063 过山车(Java JS Python C)

题目来源 Problem - 2063 (hdu.edu.cn) 题目描述 RPG girls今天和大家一起去游乐场玩&#xff0c;终于可以坐上梦寐以求的过山车了。 可是&#xff0c;过山车的每一排只有两个座位&#xff0c;而且还有条不成文的规矩&#xff0c;就是每个女生必须找个男生做partner和她同坐…

GPT3.5 改用 GPT4 价格翻了30倍 如何破局? GPT 对话成本推演

场景介绍 假设你搭建了一个平台&#xff0c;提供 ChatGPT 3.5 的聊天服务。目前已经有一批用户的使用数据&#xff0c;想要测算一下如果更换 GPT 4.0 服务需要多少成本&#xff1f; 方案阐述 如果是全切&#xff0c;最简单粗暴的方案就是根据提供 ChatGPT 3.5 消费的金额乘…

数据结构:STL:queue stack

目录 1.queue的头文件 2.queue的定义 3.queue的常用函数 3.1 push() 3.2 pop() 3.3 size() 3.4 empty() 3.5 front() 3.6 back() 4.stack的头文件 5.stack的定义 6.stack的常用函数 6.1 push() 6.2 top() 6.3 pop() 6.4 size() 6.6 empty() STLf封装的queue也是…

集合基础知识点

集合基础 1. 集合的由来 当 Java 程序中需要存放数据的时候&#xff0c;通常会定义变量来实现数据的存储&#xff0c;但是&#xff0c;当需要存储大量数据的时候该怎么办呢&#xff1f;这时首先想到的是数组&#xff0c;但是&#xff01;数组只能存放同一类型的数据&#xff…

16 Linux 内核定时器

一、Linux 时间管理和内核定时器简介 1. 内核时间管理简介 Linux 内核中有大量的函数需要时间管理&#xff0c;比如周期性的调度程序、延时程序、定时器等。 硬件定时器提供时钟源&#xff0c;时钟源的频率可以设置&#xff0c;设置好以后就周期性的产生定时中断&#xff0c;系…

连续学习(Continual Learning)或者增量学习的场景中,multiband和replay分别是什么?起到什么作用

multiband和replay是两种不同的训练策略&#xff0c;通常用在处理连续学习或者增量学习的场景中。这些策略旨在解决新知识学习导致旧知识遗忘的问题&#xff0c;即所谓的灾难性遗忘。以下是multiband和replay两种策略的基本区别&#xff1a; Multiband: 定义: multiband通常是…

C语言编译器(C语言编程软件)完全攻略(第十六部分:Dev C++下载地址和安装教程(图解))

介绍常用C语言编译器的安装、配置和使用。 十六、Dev C下载地址和安装教程&#xff08;图解&#xff09; Dev C是一款免费开源的 C/C IDE&#xff0c;内嵌GCC编译器&#xff08;GCC 编译器的 Windows 移植版&#xff09;&#xff0c;是 NOI、NOIP 等比赛的指定工具。Dev C 的…

Spring中的数据校验

文章目录 引言摘要正文基于 ValidationUtils的简单校验基于自定义 Validator的校验Spring内置校验 LocalValidatorFactoryBeanHibernateValidator校验使用HibernateValidator自定义校验规则 总结 引言 我们在日常的软件开发过程中&#xff0c;尤其是WEB开发过程中&#xff0c;…

读算法霸权笔记12_数据科学

1. 公平与公正 1.1. 公平大多数时候只是副产品 1.2. 由贪婪或偏见导致的不公正一直发生在我们身边 1.2.1. 如果承认法律面前人人平等&#xff0c;或者作为选民的大众应该被平等对待&#xff0c;我们就不能允许模型把我们分为不同的群体进行区别对待 1.3. 对于数学模型来说&…

YOLOv5:指定类别进行评估验证

YOLOv5&#xff1a;指定类别进行评估验证 前言前提条件相关介绍实验环境YOLOv5&#xff1a;指定类别进行评估验证代码实现进行验证没有指定的结果指定类别的结果 前言 由于本人水平有限&#xff0c;难免出现错漏&#xff0c;敬请批评改正。更多精彩内容&#xff0c;可点击进入P…

STM32学习笔记二十:WS2812制作像素游戏屏-飞行射击游戏(10)探索游戏平衡

游戏平衡很重要&#xff0c;然而&#xff0c;却往往得不到开发者的重视。或者&#xff0c;没有花时间仔细去做调整。 做过游戏开发的&#xff0c;都听说过一个词叫“数值爆炸”&#xff0c;实际上就是平衡没做好。 怎么样才能算是平衡呢&#xff1f; 玩家投入游戏的有两个&a…

农业银行RPA实践 3大典型案例分析

零接触开放金融服务在疫情之下被越来越多的银行和客户所认同&#xff0c;引起了更广泛的持续关注&#xff0c;各家银行纷纷开展产品服务创新&#xff0c;加速渠道迁移&#xff0c;同时通过远程办公、构建金融生态等方式积极推进零接触开放金融体系建设。 随着商业银行科技力量的…

Ansible的安装及简单使用

## Ansible的安装及简单使用 ## 一.Ubuntu安装Ansible sudo apt update sudo apt install ansible #使用以下命令检查安装是否成功&#xff1a; ansible --version二.配置Ansible #进入配置文件目录 cd /etc/ansible/ ls#文件含义 ansible.cfg #ansible配置文件,默认基本不用…

scratch绘制小正方形 2023年12月中国电子学会图形化编程 少儿编程 scratch编程等级考试四级真题和答案解析

目录 scratch绘制小正方形 一、题目要求 1、准备工作 2、功能实现 二、案例分析

紫光展锐5G扬帆出海 | 欧洲积极拥抱更多5G选择

和我国一样&#xff0c;欧洲不少国家也在2019年进入5G商用元年&#xff1a;英国在2019年5月推出了5G商用服务&#xff0c;该国最大的移动运营商EE(Everything Everywhere)最先商用5G&#xff1b;德国在2019年年中推出5G商用服务&#xff0c;德国电信、沃达丰和 Telefonica是首批…

Hive实战:分科汇总求月考平均分

文章目录 一、实战概述二、提出任务三、完成任务&#xff08;一&#xff09;准备数据1、在虚拟机上创建文本文件2、上传文件到HDFS指定目录 &#xff08;二&#xff09;实现步骤1、启动Hive Metastore服务2、启动Hive客户端3、创建分区的学生成绩表4、按分区加载数据5、查看分区…

nginx rewrite重写URL地址, laravel路由404问题

前言 在开发项目时&#xff0c;我面临一个需求&#xff1a;区分移动端和桌面端访问路径。移动端访问应在路径前加上/m/&#xff0c;而桌面端则不需要。例如&#xff1a; 移动端: 域名/m/路由地址桌面端: 域名/路由地址 这种设计在路由规则上带来了一定的重复&#xff0c;因为…

[C#]使用OpenCvSharp实现二维码图像增强超分辨率

【官方框架地址】 github.com/shimat/opencvsharp 【算法介绍】 借助于opencv自带sr.prototxt和sr.caffemodel实现对二维码图像增强 【效果展示】 【实现部分代码】 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin…