随着css知识的不断学习,通过之前的内容已经能对页面的静态资源进行比较好的布局设计,本次主要是在为静态页面添加一些美感,让一些资源动态展现。通过本次的动画知识就可以实现一些简单的动态效果了,本次案例以扇叶转动的电风扇为例。效果图如下(由于只能通过截图展示,所以不能直接展示效果,如果想直观的观看,可复制文章末尾的源代码在浏览器上观看):

CSS之动画篇_动画制作

首先我们需要进行分层,对每一层逐一实现,这里分为头部即是扇叶所在的圆形部分,中部即是风扇柱部分,尾部即是风扇底座部分。头部部分从外到内,设置一个长宽320px的正方形并设置边框和圆角,让正方形变为圆形,再设置背景颜色为白色,并调用旋转动画,风扇头设置完毕。效果如下:

CSS之动画篇_动态风扇_02

CSS之动画篇_动态风扇_03

接下来设置三片扇叶,设置三个宽150px,长40px的矩形设置背景颜色为粉红色和圆角左上角大小40px,使用绝对定位把扇叶移入到水平半径处,并把旋转中心设为为矩形水平最右边,最后使用rotate()每个扇叶旋转120度。效果如下:

CSS之动画篇_动画制作_04

CSS之动画篇_动画制作_05

最后头部设置中心logo标志,设置一个长宽30px的正方形并设置边框和圆角为logo盒子变为圆形,设置边框和红色背景,使用绝对定位让盒子居中显示,并设置层级z-index为6让logo盒子在最高层显示,最后让设置文字大小和字体加粗。效果如下:

CSS之动画篇_动画制作_06

CSS之动画篇_动画制作_07

接下来设计风扇柱,也是设置长400px宽50px的矩形盒子填充背景颜色为黑色,并使用绝对定位把风扇柱定位到风扇头框居中的位置。效果如下:

CSS之动画篇_动画制作_08

CSS之动画篇_动态风扇_09

然后在柱子上设计操作盘,设置长100px宽80px的矩形,并设置背景颜色为蓝色和让矩形左下角和右下角设置为圆角,使用绝对定位定位到风扇柱中上位置。效果如下:

CSS之动画篇_动画制作_10

CSS之动画篇_动态风扇_11

接下来设置操作盘上的数字按钮,同理设置一定大小的盒子,并设置圆角和灰色背景颜色,使用margin: 0 auto让按钮居中显示,使用text-align: center让文字也在圆形中居中显示,在使用box-shadow: 2px 2px 2px gray为按钮添加阴影是效果更加逼真。效果如下:

CSS之动画篇_动画制作_12

CSS之动画篇_动态风扇_13

最后就是底座的制作,比较简单设置一个宽200px高60px的矩形,背景颜色设置为灰色,左上角和右上角设置为圆角,并定位到风扇柱的居中位置。效果如下:

CSS之动画篇_动画制作_14

CSS之动画篇_动画制作_15

案例参考源代码:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title></title>
		<style type="text/css">
			.box {
				width: 340px;
				height: 1000px;
			}
			@keyframes ro{
				from{transform: rotate(0);}
				to{transform: rotate(360deg);}
			}
			.header {
				width: 320px;
				height: 320px;
				border: 10px solid blue;
				border-radius: 50% 50%;
				position: relative;
				background-color: white;
				z-index: 2;
				animation: ro 3s linear infinite;
				
				
			}
			.header > div {
				width: 150px;
				height: 40px;
				background-color: pink;
				border-radius: 40px 0 0;
				position: absolute;
				top: 160px;
				left: 10px;
				transform-origin: 100% 0;

				
			}
			.sh1 {
				transform: rotate(120deg);
			}
			.sh2 {
				transform: rotate(240deg);
			}
			.sh3 {
				transform: rotate(360deg);
			}
			#title {
				width: 30px;
				height: 30px;
				border-radius: 50% 50%;
				border: 5px solid blue;
				background-color: red;
				position: absolute;
				top: 150px;
				left: 150px;
				z-index: 6;
			}
			#title > p {
				text-align: center;
				line-height: 0px;
				font-size: 20px;
				font-weight: bolder;
			}
			.zz {
				width: 50px;
				height: 400px;
				background-color: black;
				position: absolute;
				top: 180px;
				left: 155px;
			}
			.ca {
				position: absolute;
				width: 80px;
				height: 150px;
				background-color: blue;
				border-radius: 0 0 40px 40px;
				top: 360px;
				left: 140px;
			}
			.ca > div {
				width: 20px;
				height: 20px;
				border-radius: 50% 50%;
				background-color: white;
				margin: 0 auto;
				margin-bottom: 10px;
				text-align: center;
				box-shadow: 2px 2px 2px gray;
			}
			.dz {
				width: 200px;
				height: 60px;
				background-color: gray;
				border-radius:  30px 30px 0 0  ;
				position: absolute;
				top: 560px;
				left: 80px;
			}
		</style>
	</head>
	<body>
		<div class="box">
			<div class="header">
				<div class="sh1">
				</div>
				<div class="sh2">
				</div>
				<div class="sh3">
				</div>
			</div>
			<div id="title">
					<p>W</p>
				</div>
			<div class="zz">
				
			</div>
			
			<div class="ca">
				<div class="btn1">
				</div>
				<div class="btn2">
					1
				</div>
				<div class="btn3">
					2
				</div>
				<div class="btn4">
					3
				</div>
				<div class="btn5">
					0
				</div>
			</div>
			<div class="dz">
				
			</div>
		</div>
	</body>
</html>