body {
overflow:hidden;
}
.wrapper {
position:relative;
margin:1em auto;
padding:0;
width:13em;
height:5em;
box-shadow:inset -1px -1px 0 black;
list-style:none;
background:linear-gradient(black 2.5%,transparent 1px),linear-gradient(90deg,black 2.5%,transparent 1px);
background-size:1em 1em;
font:2.5em Verdana,sans-serif;
}
.piece {
position:absolute;
right:0;
bottom:0;
opacity:.85;
animation:ani 4s infinite linear alternate;
}
.triangle {
overflow:hidden;
transform-origin:0 100%;
}
.piece:before {
position:absolute;
content:'';
}
.triangle:before {
width:inherit;
height:inherit;
transform-origin:inherit;
}
.block {
width:5em;
height:1em;
}
.block:before {
height:1em;
background:inherit;
}
.triangle-big {
right:5em;
width:8em;
height:3em;
transform:skewX(-69.444deg);
/* -arctan(width/height) */
animation-name:ani-triangle-big;
}
.triangle-big:before {
background:crimson;
transform:skewX(69.444deg);
/* arctan(width/height) */
}
.triangle-small {
bottom:3em;
width:5em;
height:2em;
transform:skewX(-68.2deg);
/* -arctan(width/height) */
animation-name:ani-triangle-small;
}
.triangle-small:before {
background:mediumvioletred;
transform:skewX(68.2deg);
/* arctan(width/height) */
}
.block-high {
bottom:2em;
background:darkmagenta;
animation-name:ani-block-high;
}
.block-high:before {
top:100%;
width:2em;
}
.block-low {
background:darkviolet;
}
.block-low:before {
right:0;
bottom:100%;
width:3em;
}
@keyframes ani-triangle-big {
0%,25% {
right:5em;
bottom:0;
transform:rotate(0deg) skewX(-69.444deg);
}
75%,100% {
right:0;
bottom:2em;
transform:rotate(360deg) skewX(-69.444deg);
}
}@keyframes ani-triangle-small {
0%,25% {
right:0;
bottom:3em;
transform:rotate(0deg) skewX(-68.2deg);
}
75%,100% {
right:8em;
bottom:0;
transform:rotate(-360deg) skewX(-68.2deg);
}
}@keyframes ani-block-high {
0%,25% {
right:0;
bottom:2em;
}
75%,100% {
right:3em;
bottom:1em;
}
}简单代码阐述数学模型