章节索引 :

1. 调用动画

定义好了就可以去调用了,来看一下怎么调用:

/* 清除浏览器默认边距 */
* { padding: 0; margin: 0; }

body {
  /* 这段代码是为了居中显示,不是重点,看不懂的话可以无视 */
  height: 100vh;
  display: flex;
  align-items: center;
  justify-content: center;

  /* 添加背景图 */
  background: url(../img/bg.jpg) center / cover;
}

.animate {
  width: 130px;
  height: 130px;
  background: url(../img/rect.png);
  
  /* 动画: 动画名(loading) 时长(0.6秒) 运行方式(step-end) 动画次数(无限) */
  animation: loading .6s step-end infinite;
}

/* 定义动画:动画名(loading) */
@keyframes loading {
  from { background-position: 0 0 } /* 第一个数字代表x轴坐标,第二个数字代表y轴坐标 */
  10% { background-position: -130px 0 } /* x坐标:-130 y坐标:0 */
  20% { background-position: -260px 0 }	/* x坐标:-260 y坐标:0 */
  30% { background-position: -390px 0 }	/* x坐标:-390 y坐标:0 */
  40% { background-position: -520px 0 }	/* x坐标:-520 y坐标:0 */
  50% { background-position: 0 -130px }	/* x坐标:0 y坐标:-130 */
  60% { background-position: -130px -130px } /* x坐标:-130 y坐标:-130 */
  70% { background-position: -260px -130px } /* x坐标:-260 y坐标:-130 */
  80% { background-position: -390px -130px } /* x坐标:-390 y坐标:-130 */
  90% { background-position: -520px -130px } /* x坐标:-520 y坐标:-130 */
  to { background-position: 0 } /* 最后一帧不显示,可以随便写 */
}

为了能够让同学们在浏览器里直接看结果,我们这里写了一个可运行的案例:

实例演示
预览 复制
复制成功!
<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>动画实战</title>
  <style>
	/* 清除浏览器默认边距 */
	* { padding: 0; margin: 0; }

	body {
	  /* 这段代码是为了居中显示,不是重点,看不懂的话可以无视 */
	  height: 100vh;
	  display: flex;
	  align-items: center;
	  justify-content: center;

	  /* 添加背景图 */
	  background: url(http://img.mukewang.com/wiki/5eda029f08f198f513660768.jpg) center / cover;
	}

	.animate {
	  width: 130px;
	  height: 130px;
	  background: url(http://img.mukewang.com/wiki/5eda0279091a541906500260.jpg);
	  
	  /* 动画: 动画名(loading) 时长(0.6秒) 运行方式(step-end) 动画次数(无限) */
	  animation: loading .6s step-end infinite;
	}
	
	/* 定义动画:动画名(loading) */
	@keyframes loading {
	  from { background-position: 0 0 } /* 第一个数字代表x轴坐标,第二个数字代表y轴坐标 */
	  10% { background-position: -130px 0 } /* x坐标:-130 y坐标:0 */
	  20% { background-position: -260px 0 }	/* x坐标:-260 y坐标:0 */
	  30% { background-position: -390px 0 }	/* x坐标:-390 y坐标:0 */
	  40% { background-position: -520px 0 }	/* x坐标:-520 y坐标:0 */
	  50% { background-position: 0 -130px }	/* x坐标:0 y坐标:-130 */
	  60% { background-position: -130px -130px } /* x坐标:-130 y坐标:-130 */
	  70% { background-position: -260px -130px } /* x坐标:-260 y坐标:-130 */
	  80% { background-position: -390px -130px } /* x坐标:-390 y坐标:-130 */
	  90% { background-position: -520px -130px } /* x坐标:-520 y坐标:-130 */
	  to { background-position: 0 } /* 最后一帧不显示,可以随便写 */
	}
  </style>
</head>
<body>
  <div class="animate"></div>
</body>
</html>
运行案例 点击 "运行案例" 可查看在线运行效果

运行结果:

可以看到效果就已经很完美的呈现出来了,那么接下来我们再来添加一下条形雪碧图,看看条形雪碧图的用法有何不同。

2. 小结

怎么样是不是很帅气呢?这就是雪碧图帧动画的优势所在。
如果纯用CSS来实现这段特效那简直让人无从下手,但用雪碧图+帧动画就可以很轻松的实现。

下一小节我们将在此基础上再添加一个动画,快来看看多个动画是如何并存的吧!