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