活字三维移动拼凑动画显示效果
代码语言:html
所属分类:动画
代码描述:活字三维移动拼凑动画显示效果
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html>
<html lang="en" >
<head>
<meta charset="UTF-8">
<style>
body {
display: flex;
justify-content: center;
align-items: center;
min-height: 100vh;
margin: 0;
background: var(--grey-color-4);
}
*,
*::after,
*::before {
box-sizing: border-box;
transform-style: preserve-3d;
}
:root {
--red-color: #ae2a4a;
--grey-color-1: #979797;
--grey-color-2: #959595;
--grey-color-3: #e0dfe0;
--grey-color-4: #dadada;
}
.cube {
--cube-width: 3rem;
--cube-height: 1rem;
--cube-depth: 1.5rem;
width: var(--cube-width);
height: var(--cube-height);
}
.cube__front {
width: var(--cube-width);
height: var(--cube-height);
transform-origin: bottom left;
transform: rotateX(-90deg) translateZ(calc(calc(var(--cube-depth) * 2) - var(--cube-height)));
}
.cube__back {
width: var(--cube-width);
height: var(--cube-height);
transform-origin: top left;
transform: rotateX(-90deg) rotateY(180deg) translateX(calc(var(--cube-width) * -1)) translateY(calc(var(--cube-height) * -1));
}
.cube__right {
width: calc(var(--cube-depth) * 2);
height: var(--cube-height);
transform-origin: top left;
transform: rotateY(90deg) rotateZ(-90deg) translateZ(var(--cube-width)) translateX(calc(var(--cube-depth) * -2)) translateY(calc(var(--cube-height) * -1));
}
.cube__left {
width: calc(var(--cube-depth) * 2);
height: var(--cube-height);
transform-origin: top left;
transform: rotateY(-90deg) rotateZ(90deg) translateY(calc(var(--cube-height) * -1));
}
.cube__top {
width: var(--cube-width);
height: calc(var(--cube-depth) * 2);
transform-origin: top left;
transform: translateZ(var(--cube-height));
}
.cube__bottom {
width: var(--cube-width);
height: calc(var(--cube-depth) * 2);
transform-origin: top left;
transform: rotateY(180deg) translateX(calc(var(--cube-width) * -1));
}
.cube .face {
position: absolute;
border-radius: 4px;
}
.cube__front {
background-color: var(--grey-color-1);
}
.cube__back {
background-color: var(--grey-color-3);
}
.cube__right {
background-color: var(--grey-color-1);
}
.cube__left {
background-color: var(--grey-color-2);
}
.cube__top {
background-color: var(--grey-color-3);
overflow: hidden;
}
.cube__bottom {
background-color: var(--grey-color-2);
}
.camera {
perspective: 300px;
transform: scale(3);
}
.board {
--board-row: 4;
--board-col: 6;
position: relative;
display: grid;
grid-template-rows: repeat(var(--board-row), 1fr);
grid-template-columns: repeat(var(--board-col), 1fr);
width: 18rem;
height: 12rem;
transform: rotateX(45deg);
}
.clip {
position: relative;
display: flex;
flex-direction: column;
font-size: 4rem;
line-height: 1;
color: var(--red-color);
user-select: none;
}
.clip-1 {
text-align: right;
left: 38%;
}
.clip-2 {
right: 61%;
}
.clip-3 {
text-align: right;
left: 38%;
bottom: 100%;
}
.clip-4 {
right: 61%;
bottom: 100%;
}
.clip-5 {
text-align: right;
left: 38%;
bottom: 68%;
}
.clip-6 {
right: 61%;
bottom: 68%;
}
.clip-7 {
text-align: right;
left: 38%;
bottom: 35%;
}
.clip-8 {
right: 61%;
bottom: 35%;
}
</style>
</head>
<body translate="no" >
<div class="camera">
<div class="board">
<div class="cube">
<div class="face cube__front"></div>
<div class="face cube__back"></div>
<div class="face cube__right"></div>
<div class="face cube__left"></div>
<div class="face cube__top"></div>
<div class="face cube__bottom"></div>
</div>
<div class="cube cube-12">
<div class="face cube__front"></div>
<div class="face cube__back"></div>
<div class="face cube__right"></div>
<div class="face cube__left"></div>
<div class="face cube__top"></div>
<div class="face cube__bottom"></div>
</div>
<div class="cube cube-1">
<div class="face cube__front"></div>
<div class="face cube__back"></div>
<div class="face cube__right"></div>
<div class="face cube__left"></div>
<div class="face cube__top">
<div class="clip clip-1"><span class="char-1">大</span></div>
</div>
<div class="face cube__bottom"></div>
</div>
<div class="cube cube-2">
<div class="face cube__front"></div>
<div class="face cube__back"></div>
<div class="face cube__right"></div>
<div class="face cube__left"></div>
<div class="face cube__top">
<div class="clip clip-2"><span class="char-1">大</span></div>
</div>
<div class="face cube__bottom"></div>
</div>
<div class="cube">
<div class="face cube__front"></div>
<div class="face cube__back"></div>
<div class="face cube__right"></div>
<div class="face cube__left"></div>
<di.........完整代码请登录后点击上方下载按钮下载查看
网友评论0