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;
.........完整代码请登录后点击上方下载按钮下载查看
网友评论0