许可优化
产品
解决方案
服务支持
关于
软件库
当前位置:服务支持 >  软件文章 >  CS练习---3D循环电子相册(详解)

CS练习---3D循环电子相册(详解)

阅读数 12
点赞 0
article_banner

要求:

  • 用cs动画效果实现3D循环电子相册.

目标效果展示:

在这里插入图片描述
代码详解:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title>电子相册</title>
		<!-- 主要思想:
		 定义两个容器,一个是展示框,用来展示电子相册的转动效果
		 一个图片容器,用来旋转固定下来的图片达到相册整体转动的效果;
		 实现流程:
		 1.确定布局:div包含div,div包好图片
		 2.位置调整:确定div的位置
		 3.固定图片:通过position中的absolute将所有图片定位在一起
		 4.分开图片:设置视觉距离perspective,定义rotate以及translateZ将图片分开
		 5.转动容器:将容纳图片的容器设置动画效果
		 6.进行完善:例如添加图片阴影,设置页面背景等-->


		<style type="text/css">
			body {
				background: url(img/ba.jpg)
					/* 设置背景图片,这里可自己换 */
			}

			.box {
				/* 设置图片容器,规定图片展示容器的大小 */
				width: 800px;
				height: 500px;
				margin: 20px auto;
			}

			/* 前后距离 */
			.photo-wrap {
				/* 因为是3D动画,所以设置视觉距离,否则只能在平面上旋转 */
				perspective: 800px;
				width: 800px;
			}

			.container {
				width: 800px;
				height: 500px;
				margin: 0 auto;
				transform-style: preserve-3d;
				/* 设置3d动画效果 animation : 动画效果名称  运行时间  动画播放效果  是否一直循环播放 */
				animation: round 10s linear infinite;
			}

			.img {
				/* 设置图片展示的大小 */
				width: 200px;
				height: 200px;
				/* 垂直居中 */
				line-height: 118px;
				/* 水平居中 */
				text-align: center;
				/* 设置图片的绝对位置,将所有图片展示在一起 */
				position: absolute;
				top: 160px;
				left: 300px;
				/* 为了让图片看起来更好看,这里通过添加box-shadow属性添加图片阴影; */
				box-shadow: 0 0 20px burlywood inset;
			}

			.i1 {
				/* 定义静止的时候的画面, 将第一张照片围绕rotateY 沿着平面直角坐标y轴旋转0度
				定义3D旋转,绕着默认值Z轴旋转   translateZ表示的是距离屏幕的远近,是通过视距perspective和translateZ实现的*/
				transform: rotateY(0deg) translateZ(320px);
				background: url(img/11.jpg);
				background-size: cover;
			}

			.i2 {
				/* 定义的translateZ为相同的320px,为了保持一样的观看效果 */
				transform: rotateY(40deg) translateZ(320px);
				background: url(img/22.jpg);
				background-size: cover;
			}

			.i3 {
				transform: rotateY(80deg) translateZ(320px);
				background: url(img/33.jpg);
				background-size: cover;
			}

			.i4 {
				transform: rotateY(120deg) translateZ(320px);
				background: url(img/44.jpg);
				background-size: cover;
			}

			.i5 {
				transform: rotateY(160deg) translateZ(320px);
				background: url(img/55.jpg);
				background-size: cover;
			}

			.i6 {
				transform: rotateY(200deg) translateZ(320px);
				background: url(img/66.jpg);
				background-size: cover;
			}

			.i7 {
				transform: rotateY(240deg) translateZ(320px);
				background: url(img/77.jpg);
				background-size: cover;
			}

			.i8 {
				transform: rotateY(280deg) translateZ(320px);
				background: url(img/88.jpg);
				background-size: cover;
			}

			.i9 {
				transform: rotateY(320deg) translateZ(320px);
				background: url(img/99.jpg);
				background-size: cover;
			}

			/* 这里定义的动画函数是让container(存放照片的容器)动起来,达到循环的效果 */
			@keyframes round {
				from {
					transform: rotateY(0deg);
				}

				to {
					transform: rotateY(360deg);
				}
			}
		</style>
	</head>
	<body>
		<div class="box">
			<!-- 背景容器 -->
			<div class="photo-wrap">
				<!-- 存放相册的容器 -->
				<div class="container">
					<div class="img i1"></div>
					<div class="img i2"></div>
					<div class="img i3"></div>
					<div class="img i4"></div>
					<div class="img i5"></div>
					<div class="img i6"></div>
					<div class="img i7"></div>
					<div class="img i8"></div>
					<div class="img i9"></div>
				</div>
			</div>
		</div>
	</body>
</html>
html
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129
  • 130
  • 131
  • 132
  • 133
  • 134
  • 135
  • 136
  • 137
  • 138
  • 139
  • 140
  • 141
  • 142
  • 143
  • 144
  • 145
  • 146
  • 147
  • 148
  • 149
  • 150
  • 151

一些重点和整体的思路在代码中以备注的形式给出,建议直接复制粘贴,自己跑一遍,理清实现思路。

重点:

  • 动画效果:关键字rotate和关键字translateZ
  • 动画绑定,关键字animation和关键字@keyframes
  • 整体布局思想。

免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删
相关文章
QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空