vue实现一个全息分层三维粒子发射器动画效果代码
代码语言:html
所属分类:粒子
代码描述:vue实现一个全息分层三维粒子发射器动画效果代码
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1.0,maximum=1.0,minimum=1.0,user-scalable=0" />
<script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/vue@2.6.1.js"></script>
<style>
:root {
--main-blue-color: #13aeff;
--main-white-color: #ffffff;
--main-orange-color: #d66b18;
}
body {
width:100vw;
height:100vh;
margin:0;
padding:0;
overflow:hidden;
background-image: radial-gradient( circle farthest-corner at 10% 20%, rgba(28,38,47,1) 0%, rgba(37,47,57,1) 90% );
}
.testbtn {
position: absolute;
top: 20px;
left: calc(50vw - 25px);
height: 20px;
box-shadow: 0px 0px 15px 0px rgba(255, 255, 255, 0.5);
text-transform: uppercase;
height: 25px;
width: 70px;
background-color: transparent;
z-index: 10000000000000;
color: white;
border: 1px solid white;
}
.cloud {
z-index:-1;
opacity:0.5;
animation:cloudFade;
}
@keyframes cloudFade {
0% {opacity:0.5;}
50% {opacity:0;}
100% {opacity:0.5;}
}
@keyframes reverseRotate {
from { transform:rotate(0deg) }
to { transform:rotate(360deg) }
}
@keyframes rotate {
from { transform:rotate(360deg) }
to { transform:rotate(0deg) }
}
#secondCircle .slider {
background-color: transparent;
width: calc(50% + 4px);
box-sizing: border-box;
height: 8px;
top:calc(50% - 4px);
left:calc(50% - 4px);
position: relative;
animation:rotate 8s infinite linear;
transform-origin: 4px 4px;
}
#secondCircle .sliderPoint.a {
box-shadow: 0px 0px 3px 2px rgba(255,255,255,0.55);
left: calc(100% - 2px);
width: 4px;
background-color: rgba(255,255,255,0.55);
position:relative;
box-sizing: border-box;
border-radius: 100%;
height: 4px;
}
#secondCircle .sliderPoint.a:before {
content: '';
box-shadow: 0px 0px 3px 2px rgba(255,255,255,0.55);
width: 4px;
position: relative;
top: 183px;
left: -285px;
border-radius: 90px;
height: 4px;
display: block;
background-color: rgba(255,255,255,0.55);
}
#secondCircle .sliderPoint.a:after {
content: '';
box-shadow: 0px 0px 3px 2px rgba(255,255,255,0.55);
width: 4px;
position: relative;
top: -190px;
left: -270px;
border-radius: 90px;
height: 4px;
display: block;
background-color: rgba(255,255,255,0.55);
}
#holoLoader.active .sliderPoint.a:after {
animation:sparks 3s infinite linear 0s;
}
#holoLoader.active .sliderPoint.a:before {
animation:sparks 3s infinite linear 1.2s;
}
#holoLoader.active .sliderPoint.a {
animation:sparks 3s infinite linear 0.3s;
}
@keyframes sparks {
0% {
box-shadow: 0px 0px 5px 3px rgba(255,255,255,0.75);
}
60% {
box-shadow: 0px 0px 5px 3px rgba(255,255,255,0.75);
}
61% {
box-shadow: 0px 0px 5px 8px rgba(255,255,255,0.75);
}
62% {
box-shadow: 0px 0px 5px 3px rgba(255,255,255,0.75);
}
84% {
box-shadow: 0px 0px 5px 3px rgba(255,255,255,0.75);
}
85% {
box-shadow: 0px 0px 5px 8px rgba(255,255,255,0.75);
}
86% {
box-shadow: 0px 0px 5px 3px rgba(255,255,255,0.75);
}
}
#holoLoader {
z-index:1;
//box-shadow: 0px 0px 39px 0px rgba(148,255,241,1);
position:relative;
border-radius:50%;
background-color:rgba(255,255,255,0);
width:500px;
height:500px;
margin:auto;
margin-top:calc(50vh - 250px);
transition:all 0.5s ease-in-out 0.4s;
//transform: perspective(1000px) rotateX(30deg) rotateY(-50deg) rotateZ(0deg);
}
.holoLayer {
//background: radial-gradient(circle, rgba(255,255,255,0) 0%, rgba(202,226,255,0) 65%, rgba(147,196,255,1) 100%);
//box-shadow: 0px 0px 39px 0px rgba(148,255,241,0.3);
border-radius:360px;
transition:all 0.5s ease-in-out 0s;
}
#holoLoader.active {
transform: perspective(1000px) rotateX(30deg) rotateY(-50deg) rotateZ(0deg);
transition:all 0.5s ease-in-out;
}
#core {
width:100%;
height:100%;
background:radial-gradient(circle, rgba(255,255,255,0) 0%, rgba(255,255,255,0) 17%, rgba(147,196,255,0.1) 24%, rgba(255,255,255,0) 30%)
}
#coreCanvas, #firstCanvas, #secondCanvas {
width:100%;
height:100%;
}
#firstCircle {
position:absolute;
top:0px;
width:90%;
height:90%;
margin:5%;
}
@keyframes stutterMovement {
0% {
transform:rotate(0deg)
}
10% {
transform:rotate(50deg)
}
30% {
transform:rotate(50deg)
}
40% {
transform:rotate(50deg)
}
45% {
transform:rotate(70deg)
}
60% {
transform:rotate(-20deg)
}
70% {
transform:rotate(0deg)
}
85% {
transform:rotate(20deg)
}
90% {
transform:rotate(0deg)
}
100% {
transform:rotate(0deg)
}
}
#holoLoader.active #firstCircle {
transform: translateX(-130px) translateY(-80px);
transition:all 0.5s ease-in-out 0.4s;
}
#secondCircle {
position:absolute;
top:0px;
width:80%;
height:80%;
margin:10%;
border:1px solid var(--main-orange-color);
}
#secondCircle:before {
transition:all 0.5s ease-in-out 0s;
content:'';
border:7px dotted rgba(79, 223, 255,0.3);
position:absolute;
top:0px;
width:100%;
height:100%;
top: 0px;
left: 0px;
border-radius:360%;
opacity:0;
}
#secondCircle:after {
transition:all 0.5s ease-in-out 0s;
content:'';
border:5px solid rgba(79, 223, 255,0.7);
position:absolute;
top:0px;
width:100%;
height:100%;
border-radius:360%;
opacity:0;
}
#holoLoader.active #secondCircle {
border:2px solid rgba(255, 255, 255,0.5);
transform:translateX(-180px) translateY(-120px);
transition:all 0.5s ease-in-out 0.4s;
}
#holoLoader.active #secondCircle:before {
opacity:1;
top: -55px;
left: -75px;
transition:all 0.5s ease-in-out 0.4s;
animation: rotation 5s linear 0s infinite;
transformation-origin:100% 100%;
}
@keyframes rotation {
0% {
transform:rotateZ(0deg)
}
100% {
transform:rotateZ(360deg)
}
}
#holoLoader.active #secondCircle:after {
opacity:1;
transform: translateX(45px) translateY(35px);
transition:all 0.5s ease-in-out 0.4s;
}
#thirdCircle {
position:absolute;
top:0px;
width:70%;
height:70%;
margin:15%;
border:0px solid white;
opacity:0;
transition:all 0.5s ease-in-out 0s;
}
#holoLoader.active #thirdCircle:before {
content:'';
display:block;
width:100%;
height:100%;
position:absolute;
}
#holoLoader.active #thirdCircle:after {
content:'';
position:absolute;
display:block;
border-radius:180%;
width:100%;
height:100%;
}
#holoLoader.active #thirdCircle {
border:5px solid white;
opacity:1;
transform: translateX(-520px) translateY(-330px);
transition:all 0.5s ease-in-out 0.4s;
}
#fourthCircle {
position:absolute;
top:0px;
width:60%;
height:60%;
margin:20%;
}
#holoLoader.active #fourthCircle {
transform: translateX(-810px) translateY(-540px);
transition:all 0.5s ease-in-out 0.4s;
}
#fifthCircle {
position:absolute;
top:0px;
width:50%;
height:50%;
margin:25%;
animation: stutterMovement 5s infinite linear;
}
#holoLoader.active #fifthCircle {
transform: translateX(-600px) translateY(-400px);
transition:all 0.5s ease-in-out 0.4s;
}
#sixthCircle {
position:absolute;
top:0px;
width:40%;
height:40%;
margin:30%;
border:1px dashed var(--main-orange-color);
border-radius:180%;
}
#holoLoader.active #sixthCircle {
border:3px solid var(--main-white-color);
transition:all 0.5s ease-in-out 0.4s;
}
#holoLoader.active #sixthCircle:before {
position:absolute;
width:40%;
height:40%;
margin:30%;
top:-5px;
left:-5px;
border:1px dashed var(--main-white-color);
border-radius:180%;
transition: all 0.5s ease-in-out 0s;
animation: bubbleEffect 4s infinite linear;
box-shadow: 0px 0px 0px rgba(255,255,255,0);
}
#sixthCircle:before {
content:'';
position:absolute;
.........完整代码请登录后点击上方下载按钮下载查看
网友评论0