CSS3-动画

CSS3动画

动画,可通过设置多个节点来精确控制一个或一组动画,常用来实现赋值的动画效果。相比较过渡,动画可以实现更多变化,更多控制,联系自动播放等效果。

动画的基本使用

制作动画分为两步

  1. 先定义动画
  2. 再使用(调用动画)

用keyframes定义动画(类似定义类选择器)

/* 语法格式 */
		@keyframes name{
			0%{
				
			}
			100%{
				
			}
		}

动画序列

  • 0% 是动画的开始,100%是动画的完成。这样的规则就是动画序列。
  • 在@keyframes中规定某项CSS样式,就能创建有当前样式逐渐改为新样式的动画效果。
  • 动画是使元素从一种样式逐渐变化为另一种样式的效果。您可以改变任意多的样式任意多的次数。
  • 请用百分比来规定变化发生的时间。或者关键字"from"和"to",等同于0%和100%

<html lang="zh">
<head>
	<meta charset="UTF-8">
	<meta name="viewport" content="width=device-width, initial-scale=1.0">
	<meta http-equiv="X-UA-Compatible" content="ie=edge">
	<title>title>
	<style>
		/* 动画序列 */
		/* 1.可以做多个状态的变化 keyframe关键帧 */
		/* 2.里面的白封闭要是整数 */
		/* 3. 里面的百分比就是总的时间(10s的划分) */
		@keyframes move{
			/* 开始状态 */
			0%{
				transform: translate(0px,0px);
			}
			25%{
				transform:translate(200px,0px);
			}
			50%{
				transform: translate(200px,200px);
			}
			75%{
				transform:translate(0px,200px) ;
			}
			100%{
				transform:translate(0px,0px);
			}
		}
		div{
			width: 200px;
			height:200px;
			background-color: red;
			margin:100px auto;
			/* 调用动画 动画名称 */
			animation-name:move;
			/* 持续时间 */
			animation-duration:2s;
			/* 重复次数 iteration 重复的 count次数  次数infinite*/
			animation-iteration-count: infinite;
			/* 是否反反向播放 alternate反方向 */
			animation-direction: alternate;
			/* 回到起始状态 */
			animation-fill-mode: backwards;
			/* 复合属性 */
			animation:move 2s linear 0s 1 alternate forwards;
		}
	style>
head>
<body>
	<div>div>
body>
html>

CSS3-动画_第1张图片

CSS3-动画_第2张图片

动画简写属性

animation: 动画名称 持续时间 运动曲线 何时开始 播放次数 是否反方向 动画起始或者结束状态

animation: move 5s linear 2s infinite alternate

  • 简写属性里面不包含 animation-play-state
  • 暂停动画: animation-play-state:paused; 经常和鼠标经过等其他配合使用。
  • 想要动画走回来,而不是直接跳回来:animation-direction:alternamte
  • 盒子动画结束后,停在结束位置: animate-fill-mode:forward

速度曲线细节

animatrion-timing-function 规定动画的速度曲线,默认是"ease"

CSS3-动画_第3张图片


<html lang="zh">
<head>
	<meta charset="UTF-8">
	<meta name="viewport" content="width=device-width, initial-scale=1.0">
	<meta http-equiv="X-UA-Compatible" content="ie=edge">
	<title>title>
	<style>
		div{
			margin: 70px auto;
			font-size: 20px;
			overflow: hidden;
			/* 强制不换行 */
			white-space: nowrap;
			width:0;
			height:30px;
			 background-color:#ccc; 
			animation: w 4s steps(7) forwards;
			/* steps 就是分几步来完成我们的动画 有了steps就不要在写ease 或者linear */
		}
		@keyframes w{
			from{
				width:0;
			}
			to{
				width:140px;
			}
		}
	style>
head>
<body>
	<div>我们是最强王者div>
body>
html>

CSS3-动画_第4张图片

案例:热点图


<html lang="zh">
	<head>
		<meta charset="UTF-8">
		<meta name="viewport" content="width=device-width, initial-scale=1.0">
		<meta http-equiv="X-UA-Compatible" content="ie=edge">
		<title>title>
		<style>
			.map {
				position: relative;
				width: 554px;
				height: 390px;
				background: url(map.png) no-repeat;
				margin: 0 auto;
			}

			.city {
				position: absolute;
				top: 309px;
				right: 166px;
				/* color: red; */
			}

			.cq {
				position: absolute;
				top: 262px;
				right: 254px;
			}

			.gs {
				position: absolute;
				top: 154px;
				right: 352px;
			}

			.dotted {
				width: 5px;
				height: 5px;

				background-color: #09f;
				border-radius: 50%;
			}

			.city div[class^="pulse"] {
				/* 居中定位 */
				/* 保证小波纹在父盒子里面水平垂直居中,放大之后就会中心向四周发散 */
				transform: translate(-50%, -50%);
				position: absolute;
				top: 50%;
				left: 50%;
				width: 5px;
				height: 5px;
				/* 阴影 */
				box-shadow: 0 0 12px #009dfd;
				border-radius: 50%;
				/* 动画 */
				animation: pulse 0.6s linear infinite;
			}

			.city div.pulse2 {
				/* pluse2延迟执行 */
				animation-delay: 0.4s;
			}

			.city div.pulse3 {
				/* .pluse2比 .pluse3延迟执行 */
				animation-delay: 0.7s;
			}

			/* 动画 */
			@keyframes pulse {
				0% {}

				70% {
					width: 30px;
					height: 30px;
					opacity: 1;
				}

				100% {
					width: 50px;
					height: 50px;
					opacity: 0;
				}
			}
		style>
	head>
	<body>
		<div class="map">
			<div class="city">
				<div class="dotted">
					<div class="pulse1">div>
					<div class="pulse2">div>
					<div class="pulse3">div>
				div>
			div>
			
			<div class="city cq">
				<div class="dotted">
					<div class="pulse1">div>
					<div class="pulse2">div>
					<div class="pulse3">div>
				div>
			div>
			
			<div class="city gs">
				<div class="dotted">
					<div class="pulse1">div>
					<div class="pulse2">div>
					<div class="pulse3">div>
				div>
			div>
		div>
	body>
html>

CSS3-动画_第5张图片

你可能感兴趣的:(css3)