CSS3动画效果详解

这篇具有很好参考价值的文章主要介绍了CSS3动画效果详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

CSS3动画

在CSS3中,animation属性用于实现元素的动画。

animation属性跟transition属性在功能实现上是非常相似的,都是通过改变元素的属性值来实现动画效果。但是,这两者实际上有着本质的区别

  • 对于transition属性来说,它只能将元素的某一个属性从一个属性值过渡到另一个属性值
  • 对于animation属性来说,它可以将元素的某一个属性从第1个属性值过渡到第2个属性值,然后还可以继续过渡到第3个属性值,以此类推。

从以上推断出:transition属性(即CSS3过渡)只能实现一次性的动画效果,而animation属性(即CSS3动画)可以实现连续性的动画效果

CSS3中的animation属性就是为了解决这些问题而提出的。animation属性可以通过控制关键帧来控制动画的每一步,从而实现更为复杂的动画效果。

使用animation属性实现CSS3动画需要两步

  • 定义动画:用@keyframes规则来定义动画的样式
  • 调用动画:用animation属性来调用@keyframes规则定义的动画

使用@keyframes规则创建动画

概念:在CSS3中,使用@keyframes规则来创建动画。创建动画是指从一个CSS样式到另一个CSS样式逐步变化而产生动画效果的过程。在创建动画中,可以多次更改CSS样式的设定。

一个动画由很多画面组成,每一个画面叫做一帧。其中,角色或者物体运动变化的关键动作所处的帧叫做关键帧。创建动画必须定义关键帧。

语法:

@keyframes animation_name{
    keyframes-selector{css-styles;}
}

属性值说明

属性值 说明
animation 当前动画的名称,它将作为引用该动画时的唯一标识,因此不能为空
keyframes-selector 关键帧选择器,指定当前关键帧在整个动画过程中的位置,其值可以是from和to,或者百分比。其中,from和0%效果相同(表示动画的开始),to和100%效果相同(表示动画的结束)
css-style 定义执行到当前关键帧时对应的动画状态,由CSS样式属性进行定义,多个属性之间用分号(;)分隔,且属性不能为空。

实例:仅定义开头和结尾

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>@keyframes创建动画</title>
		<style>
			*{
				padding:0;
				margin:0;
			}
			div{
				width:200px;
				height:150px;
				margin:20px auto;
				border-radius:20px;
				background-color:blueviolet;
			}
			/* 定义动画 */
			@keyframes colorChange{
				0%{
					background-color:blueviolet;
				}
				100%{
					background-color:greenyellow;
				}
			}
			/* 调用动画,这里可以先看后面 */
			div:hover{
				animation:colorChange 2s linear 0s 5 normal;
			}
		</style>
	</head>
	<body>
		<div class="a"></div>
	</body>
</html>

运行结果

CSS3动画效果详解,html+css,css3,nginx,前端,html,css

实例:定义多个关键帧

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>@keyframes创建动画</title>
		<style>
			*{
				padding:0;
				margin:0;
			}
			div{
				width:200px;
				height:150px;
				margin:20px auto;
				border-radius:50%;
				background-color:darkblue;
				cursor:pointer;
			}
			/* 定义动画 */
			@keyframes colorChange{
				0%{
					background-color:darkblue;
				}
				25%{
					background:radial-gradient(circle at top,orange 20%,yellow 40%);
				}
				50%{
					background:radial-gradient(circle at center,orange 20%,yellow 40%);
				}
				75%{
					background:radial-gradient(circle at bottom,orange 20%,yellow 40%);
				}
				100%{
					background-color:red;
				}
			}
			/* 调用动画 */
			div:hover{
				animation:colorChange 5s linear;
			}
		</style>
	</head>
	<body>
		<div class="a"></div>
	</body>
</html>

运行结果
CSS3动画效果详解,html+css,css3,nginx,前端,html,css

@keyframes其中的百分比是“持续时间”。在实例:定义多个关键帧中,定义持续时间为5s,则0%指的是0s时,25%指的是1.25s,50%指的是2.5s,75%指的是3.75s,100%指的是5s.

使用animation属性调用动画

概念:CSS3中的animation属性用于调用由@keyframes规则创建的动画

animation属性是一个复合属性,主要包括6个子属性。

属性值 说明
animation-name 对于指定CSS属性进行进行操作
animation-duration 动画的持续时间
animation-timing-function 动画的速率变化方式
animation-delay 动画的延迟时间
animation-iteration-count 动画的播放次数
animation-direction 动画的播放方向,正向还是反向

动画名称:animation-name

概念:animation-name属性用于定义要调用的由@keyframes规则创建的动画名称。调用多个动画名称要以逗号隔开。

语法:

anination-name:keyframename|none;

属性值

属性值 说明
none 默认值,表示不应用任何动画,该设置也可以用于取消动画
keyframename 用于定义要调用的动画名称。多个动画名称以英文逗号隔开

animation-name调用的动画名需要和@keyframes规则定义的动画名完全一致(区分大小写),如果不一致将不会产生任何动画效果。

注意:在animation属性上指定多个以逗号分隔的值时,它们会将根据值的数量以不同的方式分配给animation-name属性指定的动画。

持续时间:animation-duration

概念:animation-duration属性用于定义完成一个动画周期所需要的时间。

语法:

animation-duration:time;

属性值

属性值 说明
time 它表示以秒(s)或毫秒(ms)为单位的时间。默认值为0,表示没有任何动画效果。当该参数的值为负数时,则被视为0。

动画方式:animation-timing-function

概念:animation-timing-function属性用来定义动画的速度曲线。“速度曲线”,指的是动画执行过程中的速度变化情况

语法:

animation-timing-function:linear|ease|ease-in|ease-out|ease-in-out|cubic-bezier(n,n,n,n);

属性值

属性值 说明 速率
linear 规定以相同速度开始至结束的过渡效果,即”匀速“ CSS3动画效果详解,html+css,css3,nginx,前端,html,css
ease 默认值,规定慢速开始,变快之后慢速结束的过渡效果 CSS3动画效果详解,html+css,css3,nginx,前端,html,css
ease-in 规定速度越来越快的过渡效果 CSS3动画效果详解,html+css,css3,nginx,前端,html,css
ease-out 规定速度越来越慢的过渡效果 CSS3动画效果详解,html+css,css3,nginx,前端,html,css
ease-in-out 规定以慢速开始和结束的过渡效果 CSS3动画效果详解,html+css,css3,nginx,前端,html,css
cubic-bezier(n.n,n,n) 在cubic-bezier函数中自定义值,参数是0~1的数值

说明:animation-timing-function属性取值跟CSS3过渡的transition-timing-function是一样的

延迟时间:animation-delay

概念:animation-delay属性用来定义执行动画之前等待的时间,即指的是规定动画什么时候开始

语法:

animation-delay:time;

属性值

属性值 说明
time 它表示以秒(s)或毫秒(ms)为单位的时间。默认值为0,表示不延迟(不等待)

播放次数:animation-iteration-count

概念:animation-iteration-count属性用来定义动画的播放次数

语法:

animation-iteration-count:number|infinite;

属性值

属性值 说明
number 表示动画重复的次数。默认值为1,即指的是动画默认只播放1次。若属性值为一个整数,则规定动画播放次数。若属性值为一个非整数值,则表示播放动画循环的一部分。例如,0.5s将动画只播放一半。负值是无效的。
infinite 表示动画无限次循环播放

说明:animation-iteration-count属性可以指定一个或多个以逗号分隔的值

播放方向:animation-direction

概念:animation-direction属性用来定义动画的播放方向

语法:

animation-direction:normal|alternate;

属性值

属性值 说明
normal 默认值,表示动画每次都顺向播放
reverse 表示动画每次都反方向播放
alternate 表示动画会在奇数次(1次,3次,5次等)顺向播放,但在偶数次(2次,4次,6次等)逆向播放。

实例:loading效果

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8" />
  <title></title>
  <style type="text/css">
	  *{
		  padding:0;
		  margin:0;
	  }
    .contain{
		width:100px;
		margin:20px auto;
		position:relative;
		}
    .contain>i
    {
      position:absolute;
      top:0;
      width:5px;
      height:40px;
      background-color:blueviolet;
      border-radius:6px;
    }
	/*定义动画*/
	@keyframes loading
	{
	  0%{
		  transform:scaleY(1);
		  }
	  50%{
		  transform:scaleY(0.5);
		  }
	  100%{
		  transform:scaleY(1);
		  }
	}
    /*第1个i元素*/
    .contain>i:nth-child(1)
    {
      left: 0;
	  animation-name:loading;
	  animation-duration:1s;
	  animation-timing-function:ease-in;
	  animation-delay:0.1s;
	  animation-iteration-count:infinite;
    }
    /*第2个i元素*/
    .contain>i:nth-child(2)
    {
      left: 10px;
	  animation-name:loading;
	  animation-duration:1s;
	  animation-timing-function:ease-in;
	  animation-delay:0.3s;
	  animation-iteration-count:infinite;
    }
    /*第3个i元素*/
    .contain>i:nth-child(3)
    {
      left: 20px;
	  animation-name:loading;
	  animation-duration:1s;
	  animation-timing-function:ease-in;
	  animation-delay:0.6s;
	  animation-iteration-count:infinite;
    }
    /*第4个i元素*/
    .contain>i:nth-child(4) {
      left: 30px;
	  animation-name:loading;
	  animation-duration:1s;
	  animation-timing-function:ease-in;
	  animation-delay:0.3s;
	  animation-iteration-count:infinite;
    }
  </style>
</head>
<body>
  <div class="contain">
    <i></i>
    <i></i>
    <i></i>
    <i></i>
  </div>
</body>
</html>

运行结果
CSS3动画效果详解,html+css,css3,nginx,前端,html,css

播放状态:animation-play-state

概念:animation-play-state属性用来定义动画的播放状态

语法:

animation-play-state:running|paused;

属性值

属性值 说明
running 默认值,表示是动画正在播放中
paused 表示动画已被暂停

animation属性

概念:animation属性是一个复合属性,可以将以上单项动画子属性在一行内进行复合设置。简写以上繁琐的属性。

语法:

animation:animation-name|animation-duration|animation-timing-function animation-delay|animation-iteration-count|animation-direction;

说明:定义animation属性时必须指定animation-name和animation-duration属性,否则没有动画,或者动画持续时间默认为0,不会播放动画,其余子属性可省略。

实例:loading效果

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8" />
  <title></title>
  <style type="text/css">
	  *{
		  padding:0;
		  margin:0;
	  }
    .contain{
		width:100px;
		margin:20px auto;
		position:relative;
		}
    .contain>i
    {
      position:absolute;
      top:0;
      width:5px;
      height:40px;
      background-color:blueviolet;
      border-radius:6px;
    }
	/*定义动画*/
	@keyframes loading
	{
	  0%{
		  transform:scaleY(1);
		  }
	  50%{
		  transform:scaleY(0.5);
		  }
	  100%{
		  transform:scaleY(1);
		  }
	}
    /*第1个i元素*/
    .contain>i:nth-child(1)
    {
      left: 0;
     animation: loading 1s ease-in 0.1s infinite;
    }
    /*第2个i元素*/
    .contain>i:nth-child(2)
    {
      left: 10px;
      animation: loading 1s ease-in 0.3s infinite;
    }
    /*第3个i元素*/
    .contain>i:nth-child(3)
    {
      left: 20px;
      animation: loading 1s ease-in 0.6s infinite;
	
    }
    /*第4个i元素*/
    .contain>i:nth-child(4) {
      left: 30px;
      animation: loading 1s ease-in 0.3s infinite;
    }
  </style>
</head>
<body>
  <div class="contain">
    <i></i>
    <i></i>
    <i></i>
    <i></i>
  </div>
</body>
</html>

运行结果

CSS3动画效果详解,html+css,css3,nginx,前端,html,css

从效果上来看,这两者是等价的。相比较用animation属性的子属性,直接使用animation复合属性上更加简洁清楚。文章来源地址https://www.toymoban.com/news/detail-811812.html

到了这里,关于CSS3动画效果详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 学习CSS3,模拟春雪漫天飘的动画效果

    清明时节雨纷纷,但有些地方却下起了大雪,今天我们就用所学的 CSS3 知识,模拟一下 夜晚漫天飘雪 的场景吧。 目录 1. 实现思路 2. 部分HTML代码  3. 夜空的背景  4. 雪花的样式  5. 粒子飞升效果  6. HTML完整源代码  7. CSS3完整源代码 8.  最后  1. 实现思路 DIV布局 的使用 整

    2023年04月09日
    浏览(46)
  • 响应式Web开发项目教程(HTML5+CSS3+Bootstrap)第2版 例3-5 CSS3 动画

    上述代码中: 第10行代码定义animation属性实现动画效果; 第10~17行代码定义rotate动画让图片从0%到100%顺时针旋转360度; 第18~20行代码通过animation动画实现当鼠标指针悬停在图片上时让图片不停的旋转。 CSS3 动画 CSS3可以创建动画,它可以取代许多网页动画图像、Flash动画和Ja

    2024年02月02日
    浏览(48)
  • 前端必学的CSS3波浪效果演示

    使用 translateX 和 translateZ 属性创建波浪效果: 使用场景: 适用于需要在X轴上平移和在Z轴上应用3D变换的波浪效果。 可以用于创建具有起伏效果的海浪、水面波纹等效果。 优点: 通过3D变换,可以实现更加真实的波浪效果。 可以通过调整 translateX 和 translateZ 的值来控制波浪

    2024年02月02日
    浏览(49)
  • CSS3十大滤镜效果详解

    类似于美颜相机、美图秀秀这样的美颜工具,能够让我们轻松地应用多种特效,例如转换为黑白照片、复古风格化、调整亮度等。在之前仅凭CSS几乎很难做到这些效果。 但在CSS3的语法中,所有的这些视觉特效都是通过“ filter ”属性来快速实现的。 语法: filter属性值有以下

    2024年01月16日
    浏览(41)
  • 【Web前端开发基础】CSS3之空间转换和动画

    目标:使用transform属性实现元素在空间内的位移、旋转、缩放等效果 1.1 概述 空间:是从坐标轴角度定义的。x 、y 和z三条坐标轴构成了一个立体空间,z轴位置与视线方向相同 空间转换也叫3D转换 属性:transform 2D转换能够改变元素X轴和Y轴方向特性,3D转换还能改变Z轴方向特

    2024年01月25日
    浏览(52)
  • css3动画基础详解(@keyframes和animation)

    动画是使元素从一种样式逐渐变化为另外一种效果,CSS3动画的生成,主要依赖 @keyframes 定义动画, animation 执行动画。 @keyframes 通过  @keyframes  规则创建动画。 @keyframes keyframes-name {keyframes-selector {css-styles;}} keyframes-name  帧列表的名称。 名称必须符合 CSS 语法中对标识符的定

    2024年02月04日
    浏览(52)
  • h5(html5)+css3前端笔记二

    一、表格标签 表格的主要作用: 表格主要用于 显示、展示数据 ,因为它可以让数据显示的非常的规整,可读性非常好。特别是后台展示数据的时候,能够熟练运用表格就显得很重要。一个清爽简约的表格能够把繁杂的数据表现得很有条理。 1. table/table 用来定义表格的标签

    2024年02月14日
    浏览(65)
  • 【前端基础篇】HTML5 + CSS3 入门知识

    万维网的核心语言、标准通用标记语言下的一个应用超文本标记语言(HTML)的第五次重大修改(这是一项推荐标准、外语原文:W3C Recommendation) HTML5是HTML最新的修订版本,2014年10月由万维网联盟(W3C)完成标准制定。 HTML5的设计目的是为了在移动设备上支持多媒体。 HTML5 简

    2024年02月09日
    浏览(78)
  • 前端 | ( 十一)CSS3简介及基本语法(上) | 尚硅谷前端html+css零基础教程2023最新

    学习来源 :尚硅谷前端html+css零基础教程,2023最新前端开发html5+css3视频 系列笔记 : 【HTML4】(一)前端简介 【HTML4】(二)各种各样的常用标签 【HTML4】(三)表单及HTML4收尾 【CSS2】(四)CSS基础及CSS选择器 【CSS2】(五)CSS三大特性及常用属性 【CSS2】(六)CSS盒子模型

    2024年02月16日
    浏览(49)
  • 前端 | ( 十三)CSS3简介及基本语法(下)| 伸缩盒模型 | 尚硅谷前端html+css零基础教程2023最新

    学习来源 :尚硅谷前端html+css零基础教程,2023最新前端开发html5+css3视频 系列笔记 : 【HTML4】(一)前端简介 【HTML4】(二)各种各样的常用标签 【HTML4】(三)表单及HTML4收尾 【CSS2】(四)CSS基础及CSS选择器 【CSS2】(五)CSS三大特性及常用属性 【CSS2】(六)CSS盒子模型

    2024年02月16日
    浏览(64)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包