css实现一个三维大炮控制发射效果代码
代码语言:html
所属分类:布局界面
代码描述:css实现一个三维大炮控制发射效果代码
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html> <html lang="en" > <head> <meta charset="UTF-8"> <style> @import url("https://fonts.googleapis.com/css2?family=Open+Sans&display=swap"); *, *::before, *::after { padding: 0; margin: 0 auto; box-sizing: border-box; transform-style: preserve-3d; } body { font-family: "Open Sans", sans-serif; background-color: #000; color: #fff; min-height: 100vh; display: flex; justify-content: center; align-items: center; overflow: hidden; } .game { position: relative; perspective: 50vw; perspective-origin: 50% -5vw; } .rotateRight { -webkit-animation: sceneRotateX 10s -1s infinite linear paused; animation: sceneRotateX 10s -1s infinite linear paused; } .rotateLeft { animation: sceneRotateX 10s infinite linear paused reverse; } @-webkit-keyframes sceneRotateX { from { transform: rotateY(0deg); } to { transform: rotateY(360deg); } } @keyframes sceneRotateX { from { transform: rotateY(0deg); } to { transform: rotateY(360deg); } } .player { position: absolute; right: -15vw; bottom: -10vw; } .player_base { width: 4vw; height: 2vw; position: absolute; left: -2vw; bottom: 0; } .player_base > * { position: absolute; box-shadow: 0 0 1vw #000 inset; } .player_base-front { background-color: #666; width: 4vw; height: 2vw; transform: translateZ(1.5vw); } .player_base-right { background-color: #666; width: 3vw; height: 2vw; transform: rotateY(90deg) translateZ(2.5vw); } .player_base-back { background-color: #666; width: 4vw; height: 2vw; transform: rotateY(180deg) translateZ(1.5vw); } .player_base-left { background-color: #666; width: 3vw; height: 2vw; transform: rotateY(270deg) translateZ(1.5vw); } .player_base-top { background-color: #999; width: 4vw; height: 3vw; transform: rotateX(90deg) translateZ(1.5vw); } .player_base-top::after { content: ""; position: absolute; top: 1vw; left: 0.5vw; width: 3vw; height: 1vw; background-color: #000; box-shadow: 0 0 0.25vw 0.25vw #000; } .player_base-bottom { background-color: #111; width: 4vw; height: 3vw; transform: rotateX(90deg) translateZ(-0.45vw); box-shadow: 0 0 0.5vw 0.5vw #111; } .player_cannon { width: 5vw; height: 1vw; position: absolute; right: -1.5vw; bottom: 1vw; transform-origin: top right; transform: rotate(20deg); -webkit-animation: cannonAngle 3s -1.5s infinite ease-in-out alternate paused; animation: cannonAngle 3s -1.5s infinite ease-in-out alternate paused; } @-webkit-keyframes cannonAngle { from { transform: rotate(20deg); } to { transform: rotate(70deg); } } @keyframes cannonAngle { from { transform: rotate(20deg); } to { transform: rotate(70deg); } } .player_cannon > * { position: absolute; box-shadow: 0 0 0.5vw #000 inset; width: 100%; height: 100%; } .player_cannon-front { background-color: #666; transform: translateZ(0.5vw); } .player_cannon-top { background-color: #999; transform: rotateX(90deg) translateZ(0.5vw); } .player_cannon-back { background-color: #666; transform: rotateX(180deg) translateZ(0.5vw); } .player_cannon-bottom { background-color: #333; transform: rotateX(270deg) translateZ(0.5vw); } .cube { position: absolute; right: 0.3vw; bottom: 1.4vw; width: 0.3vw; height: 0.3vw; } .cube_container { position: absolute; right: -16.5vw; bottom: -10vw; width: 42vw; height: 5vw; -webkit-animation: cubeContainer 3s -1.5s infinite ease-in-out alternate paused; animation: cubeContainer 3s -1.5s infinite ease-in-out alternate paused; } @-webkit-keyframes cubeContainer { from { width: 50vw; height: 6vw; } to { width: 25vw; height: 20vw; } } @keyframes cubeContainer { from { width: 50vw; height: 6vw; } to { width: 25vw; height: 20vw; } } @-webkit-keyframes cubeTrasform { 0%, 5% { transform: scale(0); } 8% { transform: scale(1); } 70%, 100% { transform: scale(1) rotateX(1080deg) rotateY(1080deg); } } @keyframes cubeTrasform { 0%, 5% { transform: scale(0); } 8% { transform: scale(1); } 70%, 100% { transform: scale(1) rotateX(1080deg) rotateY(1080deg); } } @-webkit-keyframes cubeRight { 0% { right: 0; } 70%, 100% { right: 100%; } } @keyframes cubeRight { 0% { right: 0; } 70%, 100% { right: 100%; } } @-webkit-keyframes cubeBottom { 0% { bottom: 2vw; } 35% { bottom: 100%; -webkit-animation-timing-function: ease-in; animation-timing-function: ease-in; } 70%, 100% { bottom: 0; } } @keyframes cubeBottom { 0% { bottom: 2vw; } 35% { bottom: 100%; -webkit-animation-timing-function: ease-in; animation-timing-function: ease-in; } 70%, 100% { bottom: 0; } } @-webkit-keyframes cubeExplode { 0%, 70% { transform: translate3d(0, 0, 0) rotateX(var(--rx, 0)) rotateY(var(--ry, 0)) rotateZ(var(--rz, 0)) translate3d(var(--tx, 0), var(--ty, 0), var(--tz, 0)); opacity: 1; } 100% { transform: translate3d(var(--ntx), var(--nty), var(--ntz)) rotateX(var(--nrx)) rotateY(var(--nry)) rotateZ(var(--nrz)) translate3d(0, 0, 0); opacity: 0; } } @keyframes cubeExplode { 0%, 70% { transform: translate3d(0, 0, 0) rotateX(var(--rx, 0)) rotateY(var(--ry, 0)) rotateZ(var(--rz, 0)) translate3d(var(--tx, 0), var(--ty, 0), var(--tz, 0)); opacity: 1; } 100% { transform: translate3d(var(--ntx), var(--nty), var(--ntz)) rotateX(var(--nrx)) rotateY(var(--nry)) rotateZ(var(--nrz)) translate3d(0, 0, 0); opacity: 0; } } .cube > div { position: absolute; width: 100%; height: 100%; background-color: hsl(var(--hue), 100%, 60%); --tz: 0.45vw; } .cube > div:nth-child(1) { --hue: 48; --ntx: -2.5vw; --nty: -6vw; --ntz: 3vw; --nrx: 341deg; --nry: 262deg; --nrz: 228deg; } .cube > div:nth-child(2) { --hue: 264; --ntx: 0.5vw; --nty: -7vw; --ntz: 1vw; --nrx: 224deg; --nry: 207deg; --nrz: 205deg; } .cube > div:nth-child(3) { --hue: 92; --ntx: -2.5vw; --nty: -4vw; --ntz: 0vw; --nrx: 29deg; --nry: 35deg; --nrz: 13deg; } .cube > div:nth-child(4) { --hue: 207; --ntx: -4.5vw; --nty: -4vw; --ntz: -2vw; --nrx: 305deg; --nry: 289deg; --nrz: 185deg; } .cube > div:nth-child(5) { --hue: 198; --ntx: -4.5vw; --nty: -7vw; --ntz: -5vw; --nrx: 307deg; --nry: 196deg; --nrz: 151deg; } .cube > div:nth-child(6) { --hue: 292; --ntx: -0.5vw; --nty: -8vw; --ntz: -3vw; --nrx: 245deg; --nry: 30deg; --nrz: 311deg; } .cube > div:nth-child(7) { --hue: 129; --ntx: -3.5vw; --nty: -10vw; --ntz: 2vw; --nrx: 352deg; --nry: 263deg; --nrz: 352deg; } .cube > div:nth-child(8) { --hue: 160; --ntx: -4.5vw; --nty: -5vw; --ntz: -1vw; --nrx: 112deg; --nry: 62deg; --nrz: 183deg; } .cube > div:nth-child(9) { --hue: 106; --ntx: 1.5vw; --nty: -3vw; --ntz: 2vw; --nrx: 142deg; --nry: 213deg; --nrz: 221deg; } .cube > div:nth-child(10) { --hue: 216; --ntx: 1.5vw; --nty: -3vw; --ntz: -2vw; --nrx: 90deg; --nry: 44deg; --nrz: 210deg; } .cube > div:nth-child(11) { --hue: 152; --ntx: -6.5vw; --nty: -9vw; --ntz: -1vw; --nrx: 155deg; --nry: 273deg; --nrz: 41deg; } .cube > div:nth-child(12) { --hue: 106; --ntx: -7.5vw; --nty: -3vw; --ntz: -2vw; --nrx: 10deg; --nry: 348deg; --nrz: 71deg; } .cube > div:nth-child(13) { --hue: 335; --ntx: -3.5vw; --nty: -4vw; --ntz: -2vw; --nrx: 204deg; --nry: 350deg; --nrz: 214deg; } .cube > div:nth-child(14) { --hue: 239; --ntx: 1.5vw; --nty: -8vw; --ntz: 4vw; --nrx: 355deg; --nry: 94deg; --nrz: 60deg; } .cube > div:nth-child(15) { --hue: 169; --ntx: 1.5vw; --nty: -6vw; --ntz: 4vw; --nrx: 236deg; --nry: 38deg; --nrz: 43deg; } .cube > div:nth-child(16) { --hue: 245; --ntx: -5.5vw; --nty: -9vw; --ntz: 4vw; --nrx: 32deg; --nry: 296deg; --nrz: 14deg; } .cube > div:nth-child(17) { --hue: 307; --ntx: -6.5vw; --nty: -3vw; --ntz: 0vw; --nrx: 158deg; --nry: 108deg; --nrz: 297deg; } .cube > div:nth-child(18) { --hue: 91; --ntx: -3.5vw; --nty: -3vw; --ntz: -1vw; --nrx: 62deg; --nry: 5deg; --nrz: 312deg; } .cube > div:nth-child(19) { --hue: 260; --ntx: -1.5vw; --nty: -4vw; --ntz: 1vw; --nrx: 284deg; --nry: 270deg; --nrz: 225deg; } .cube > div:nth-child(20) { --hue: 123; --ntx: -1.5vw; --nty: -10vw; --ntz: -4vw; --nrx: 62deg; --nry: 112deg; --nrz: 71deg; } .cube > div:nth-child(21) { --hue: 25; --ntx: -6.5vw; --nty: -5vw; --ntz: 0vw; --nrx: 109deg; --nry: 265deg; --nrz: 85deg; } .cube > div:nth-child(22) { --hue: 321; --ntx: -4.5vw; --nty: -3vw; --ntz: -4vw; --nrx: 319deg; --nry: 360deg; --nrz: 76deg; } .cube > div:nth-child(23) { --hue: 177; --ntx: -1.5vw; --nty: -9vw; --ntz: 0vw; --nrx: 88deg; --nry: 274deg; --nrz: 52deg; } .cube > div:nth-child(24) { --hue: 344; --ntx: -1.5vw; --nty: -10vw; --ntz: 3vw; --nrx: 322deg; --nry: 19deg; --nrz: 25deg; } .cube > div:nth-child(25) { --hue: 355; --ntx: 1.5vw; --nty: -5vw; --ntz: -4vw; --nrx: 150deg; --nry: 36deg; --nrz: 62deg; } .cube > div:nth-child(26) { --hue: 279; --ntx: -7.5vw; --nty: -10vw; --ntz: 3vw; --nrx: 221deg; --nry: 230deg; --nrz: 66deg; } .cube > div:nth-child(27) { --hue: 241; --ntx: -3.5vw; --nty: -3vw; --ntz: -3vw; --nrx: 158deg; --nry: 336deg; --nrz: 207deg; } .cube > div:nth-child(28) { --hue: 89; --ntx: -6.5vw; --nty: -8vw; --ntz: -4vw; --nrx: 35deg; --nry: 28deg; --nrz: 184deg; } .cube > div:nth-child(29) { --hue: 168; --ntx: -6.5vw; --nty: -9vw; --ntz: -2vw; --nrx: 145deg; --nry: 300deg; --nrz: 122deg; } .cube > div:nth-child(30) { --hue: 236; --ntx: -3.5vw; --nty: -10vw; --ntz: 1vw; --nrx: 305deg; --nry: 81deg; --nrz: 275deg; } .cube > div:nth-child(31) { --hue: 290; --ntx: 1.5vw; --nty: -10vw; --ntz: 4vw; --nrx: 275deg; --nry: 233deg; --nrz: 249deg; } .cube > div:nth-child(32) { --hue: 122; --ntx: -7.5vw; --nty: -10vw; --ntz: -3vw; --nrx: 281deg; --nry: 138deg; --nrz: 51deg; } .cube > div:nth-child(33) { --hue: 281; --ntx: -7.5vw; --nty: -10vw; --ntz: -2vw; --nrx: 353deg; --nry: 224deg; --nrz: 136deg; } .cube > div:nth-child(.........完整代码请登录后点击上方下载按钮下载查看
网友评论0