div+css实现三维相机拍摄照片旋转动画效果代码
代码语言:html
所属分类:三维
代码描述:div+css实现三维相机拍摄照片旋转动画效果代码,拍摄时还有闪光效果。
代码标签: div css 三维 相机 拍摄 照片 旋转 动画
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html>
<html lang="en" >
<head>
<meta charset="UTF-8">
<link type="text/css" rel="stylesheet" href="//repo.bfw.wiki/bfwrepo/css/normalize.5.0.css">
<style>
@keyframes main {
0% {
transform: rotateY(20deg) rotateX(-20deg) rotatez(0deg) translateY(0px);
}
2% {
transform: rotateY(20deg) rotateX(-20deg) rotatez(0deg) translateY(0px);
}
7% {
transform: rotateY(-70deg) rotateX(40deg) rotatez(0deg) translateY(-160px);
}
9% {
transform: rotateY(10deg) rotateX(0deg) rotatez(0deg) translateY(-140px);
}
10% {
transform: rotateY(-10deg) rotateX(0deg) rotatez(0deg) translateY(-140px);
}
12% {
transform: rotateY(-10deg) rotateX(0deg) rotatez(0deg) translateY(-140px);
}
13% {
transform: rotateY(10deg) rotateX(0deg) rotatez(0deg) translateY(-140px);
}
15% {
transform: rotateY(220deg) rotateX(-40deg) rotatez(0deg) translateY(-40px) translateZ(-150px);
}
17% {
transform: rotateY(220deg) rotateX(-40deg) rotatez(0deg) translateY(-40px) translateZ(-150px);
}
18% {
transform: rotateY(200deg) rotateX(-40deg) rotatez(0deg) translateY(-40px) translateZ(-150px);
}
20% {
transform: rotateY(370deg) rotateX(-50deg) rotatez(0deg) translateY(-40px) translateZ(-150px);
}
21% {
transform: rotateY(350deg) rotateX(-50deg) rotatez(0deg) translateY(-40px) translateZ(-150px);
}
23% {
transform: rotateY(350deg) rotateX(-50deg) rotatez(0deg) translateY(-40px) translateZ(-150px);
}
24% {
transform: rotateY(340deg) rotateX(-50deg) rotatez(0deg) translateY(-40px) translateZ(-150px);
}
26% {
transform: rotateY(480deg) rotateX(-60deg) rotatez(0deg) translateY(50px) translateZ(-250px) translateX(40px);
}
27% {
transform: rotateY(475deg) rotateX(-60deg) rotatez(0deg) translateY(50px) translateZ(-250px) translateX(40px);
}
30% {
transform: rotateY(475deg) rotateX(-60deg) rotatez(0deg) translateY(50px) translateZ(-250px) translateX(40px);
}
31% {
transform: rotateY(465deg) rotateX(-60deg) rotatez(0deg) translateY(50px) translateZ(-250px) translateX(40px);
}
37% {
transform: rotateY(900deg) rotateX(10deg) rotatez(0deg) translateY(-20px) translateZ(-250px) translateX(40px);
}
38% {
transform: rotateY(895deg) rotateX(10deg) rotatez(0deg) translateY(-20px) translateZ(-250px) translateX(40px);
}
40% {
transform: rotateY(895deg) rotateX(10deg) rotatez(0deg) translateY(-20px) translateZ(-250px) translateX(40px);
}
41% {
transform: rotateY(885deg) rotateX(10deg) rotatez(0deg) translateY(-20px) translateZ(-250px) translateX(40px);
}
42% {
transform: rotateY(895deg) rotateX(10deg) rotatez(0deg) translateY(-20px) translateZ(-250px) translateX(40px);
}
45% {
transform: rotateY(895deg) rotateX(10deg) rotatez(0deg) translateY(-20px) translateZ(-250px) translateX(40px);
}
46% {
transform: rotateY(885deg) rotateX(10deg) rotatez(0deg) translateY(-20px) translateZ(-250px) translateX(40px);
}
47% {
transform: rotateY(895deg) rotateX(10deg) rotatez(0deg) translateY(-20px) translateZ(-250px) translateX(40px);
}
50% {
transform: rotateY(895deg) rotateX(10deg) rotatez(0deg) translateY(-20px) translateZ(-250px) translateX(40px);
}
51% {
transform: rotateY(895deg) rotateX(15deg) rotatez(0deg) translateY(-20px) translateZ(-250px) translateX(40px);
}
52% {
transform: rotateY(895deg) rotateX(10deg) rotatez(0deg) translateY(-20px) translateZ(-250px) translateX(40px);
}
60% {
transform: rotateY(895deg) rotateX(10deg) rotatez(0deg) translateY(-20px) translateZ(-250px) translateX(40px);
}
70% {
transform: rotateY(20deg) rotateX(-20deg) rotatez(0deg) translateY(0px);
}
}
@keyframes photos {
0% {
left: -390px;
}
33% {
left: -390px;
}
34% {
left: -260px;
}
40% {
left: -260px;
}
41% {
left: -130px;
}
45% {
left: -130px;
}
46% {
left: 0px;
}
50% {
left: 0px;
top: 0px;
}
51% {
left: 0px;
top: 90px;
}
60% {
left: 0px;
top: 90px;
}
70% {
left: -390px;
top: 0px;
}
}
@keyframes flash {
0% {
opacity: 0;
}
16% {
opacity: 0;
}
16.3% {
opacity: 1;
}
16.5% {
opacity: 0;
}
16.8% {
opacity: 1;
}
17% {
opacity: 0;
}
21% {
opacity: 0;
}
21.3% {
opacity: 1;
}
21.5% {
opacity: 0;
}
21.8% {
opacity: 1;
}
22% {
opacity: 0;
}
27% {
opacity: 0;
}
27.3% {
opacity: 1;
}
27.5% {
opacity: 0;
}
27.8% {
opacity: 1;
}
28% {
opacity: 0;
}
}
.flash-overlay {
position: fixed;
width: 100%;
height: 100%;
z-index: 100000;
background: #fff;
left: 0;
top: 0;
opacity: 0;
animation: flash infinite 30s ease;
}
body {
background: #333;
}
.papers {
width: 120px;
height: 170px;
position: absolute;
left: 50%;
top: 50%;
perspective: 500px;
transform-style: preserve-3d;
margin: -100px 0 0 -100px;
}
.paper {
width: 200px;
height: 240px;
transform-style: preserve-3d;
transform: rotateX(70deg) rotateZ(40deg) translateZ(-100px);
position: absolute;
left: 0;
top: 0;
box-shadow: 2px 1px 2px rgba(0,0,0,0.2);
background: url(//repo.bfw.wiki/bfwrepo/images/photo/1.jpg) no-repeat center center #fdfdfd;
z-index: 3;
background-size: 180px 220px;
}
.paper.two {
transform: rotateX(70deg) rotateZ(45deg) translateZ(-103px);
z-index: 2;
}
.paper.three {
transform: rotateX(70deg) rotateZ(70deg) translateX(40px) translateZ(-106px);
z-index: 1;
background: url(//repo.bfw.wiki/bfwrepo/images/photo/2.jpg) no-repeat center center #fdfdfd;
}
.scene {
z-index: 100000;
width: 200px;
height: 130px;
position: absolute;
left: 50%;
top: 50%;
margin: -100px 0 0 -65px;
perspective: 500px;
transform-style: preserve-3d;
}
.camera {
width: 200px;
height: 130px;
position: absolute;
left: 0;
top: 40px;
transform-style: preserve-3d;
transform: rotateY(20deg) rotateX(-20deg) rotatez(0deg);
animation: main infinite 30s ease;
transform-origin: 50% 50%;
}
.camera .body {
width: 200px;
height: 130px;
position: absolute;
left: 0;
top: 0;
transform-style: preserve-3d;
}
.body .face {
position: absolute;
left: 0px;
top: 0px;
transform-style: preserve-3d;
transform-origin: 50% 50% 20px;
}
.back.face {
width: 200px;
height: 130px;
background: #ddd;
border-radius: 12px;
transform: translateZ(-20px);
}
.front.face {
width: 200px;
height: 130px;
background: #ddd;
border-radius: 12px;
transform: translateZ(20px);
}
.left.face {
width: 40px;
height: 110px;
background: #bbb;
border-radius: 0;
transform: translateZ(-10px) translateY(10px) rotateY(90deg) scaleX(1.5);
}
.right.face {
width: 40px;
height: 110px;
background: #bbb;
border-radius: 0;
transform: translateZ(-20px) translateY(10px) translateX(200px) rotateY(90deg);
}
.top.face {
width: 178px;
height: 40px;
background: #eee;
border-radius: 0;
transform: translateZ(-20px) translateX(10px) rotateX(-90deg);
}
.bottom.face {
width: 178px;
height: 40px;
background: #eee;
border-radius: 0;
transform: translateZ(-20px) translateX(10px) translateY(130px) rotateX(-90deg);
}
.radiuses .left-top {
position: absolute;
top: 0;
left: 0;
transform-style: preserve-3d;
transform: translateZ(10px) translateY(-10px) translateX(-18px) rotateY(90deg) rotateX(90deg) scaleX(1.5);
}
.radiuses .left-top>div {
width: 40px;
height: 5px;
}
.radiuses .right-top {
position: absolute;
top: 0;
left: 0;
transform-style: preserve-3d;
transform: translateZ(0px) translateY(-10px) translateX(177px) rotateZ(0deg) rotateY(270deg) rotateX(90deg);
}
.radiuses .right-top>div {
width: 40px;
height: 5px;
}
.radiuses .left-bottom {
position: absolute;
top: 0;
left: 0;
transform-style: preserve-3d;
transform: translateZ(10px) translateY(120px) translateX(-18px) rotateZ(0deg) rotateY(270deg) rotateX(270deg) scaleX(1.5);
}
.radiuses .left-bottom>div {
width: 40px;
height: 5px;
}
.radiuses .right-bottom {
position: absolute;
top: 0;
left: 0;
transform-style: preserve-3d;
transform: translateZ(0px) translateY(120px) translateX(177px) rotateZ(0deg) rotateY(90deg) rotateX(270deg);
}
.radiuses .right-bottom>div {
width: 40px;
height: 5px;
}
.radiuses .one {
background: #e3e3e3;
transform: rotateX(18deg);
}
.radiuses .two {
background: #D9d9d9;
transform: rotateX(36deg) translateZ(-2px) translateY(-1px);
}
.radiuses .three {
background: #cfcfcf;
transform: rotateX(54deg) translateZ(-5px) translateY(-2px);
}
.radiuses .four {
background: #c5c5c5;
transform: rotateX(72deg) translateZ(-8px) translateY(-6px);
}
.objective {
width: 90px;
height: 90px;
background: #aaa;
border-radius: 100%;
position: absolute;
left: 50%;
top: 50%;
margin: -45px 0 0 -10px;
transform-style: preserve-3d;
transform: translateZ(4px);
}
.objective:before {
content: "";
background: #aaa;
border-radius: 100%;
position: absolute;
left: 0;
top: 0;
width: 90px;
height: 90px;
transform: translateZ(-3px);
}
.objective:after {
content: "";
box-sizing: border-box;
border: 10px solid #ccc;
border-radius: 100%;
position: absolute;
left: 0;
top: 0;
width: 90px;
height: 90px;
transform: translateZ(5px);
}
.objective.small:before {
background: #aaa;
transform: translateZ(-3px);
}
.objective.small {
transform: translateZ(13px) scale(0.87);
}
.objective.small:after {
transform: translateZ(4px)
}
.objective.small .depth {
height: 8px;
width: 10px;
margin: -10px 0 0 -4px;
background: #aaa;
top: 50px;
left: 45px;
}
.objective.small .lens {
width: 70px;
height: 70px;
position: absolute;
left: 10px;
top: 10px;
background: #222;
border-radius: 100%;
transform: translateZ(3px);
transform-style: preserve-3d;
}
.objective.small .lens-inner {
width: 50px;
height: 50px;
border-radius: 100%;
position: absolute;
left: 10px;
top: 10px;
background: #111;
transform: translateZ(2px);
box-shadow: inset 0 -1px 10px rgba(108,0,144,1);
background-image: linear-gradient(0deg, rgba(255,255,255,0.23) 10%,rgba(0,0,0,0) 100%), linear-gradient(to bottom, rgba(63,74,226,0.63) 0%,rgba(0,0,0,0) 100%),radial-gradient(ellipse at 40px 40px, rgba(0,0,0,1) 0%,rgba(0,0,0,0) 50%);
}
.objective.small .lens-inner .one {
width: 20px;
height: 20px;
background-image: linear-gradient(180deg, rgba(255,255,255,0.1) 0%,rgba(0,0,0,0) 100%);
border-radius: 100%;
position: absolute;
left: 15px;
top: 15px;
}
.objective.small .lens-inner .two {
width: 10px;
height: 10px;
background: rgba(255,255,255,0.07);
.........完整代码请登录后点击上方下载按钮下载查看
网友评论0