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