51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

分享一个纯CSS3实现的绘制动画效果:可爱宠物

今天在国外一个网站看到一个不错的CSS效果,一个纯CSS3实现的绘制动画效果,想弄出来这个效果,需要很大的耐心哟。先来看下效果图,如下:

1.jpg

废话不多说,直接上代码。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>分享一个纯CSS3实现的绘制动画效果:可爱宠物 - Web前端之家https://www.jiangweishan.com/</title>
    <style>
       * {
  box-sizing: border-box;
}
:root {
  --coefficient: 1vmin;
  --size: 50;
  --min-size: 200;
  --unit: calc((var(--size) / 493) * var(--coefficient));
  --stroke: #0d0d0d;
  --lip-color: #ffb3b3;
  --cheek-color: #ff8080;
  --tongue-color: #f33;
  --cap-color: #47c20a;
  --leaf-color: #369108;
  --backdrop: #0e8134;
  --eye-shade: #4d3c33;
  --fur-color: #b4a088;
  --face: #f2f2f2;
  --eye: #f2f2f2;
  --outfit: #f2a60d;
  --pupil: #0a3a5c;
  --pot-color: #fc6;
  --default-petal-color: #f00;
  --cap-accent: #ffd500;
  --peak-color: #2d7906;
  --flower-core: #f2cc0d;
  --stroke-border: calc(5 * var(--unit)) solid var(--stroke);
}
body {
  min-height: 100vh;
  background: #ffb3b3;
}
img,
.leif {
  height: calc(511 * var(--unit));
  width: calc(493 * var(--unit));
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
}
.leif *,
.leif *:after,
.leif *:before {
  position: absolute;
}
.leif__himself {
  height: 100%;
  width: 100%;
  -webkit-clip-path: circle(50% at 50% 38%);
  clip-path: circle(50% at 50% 38%);
}
.leif__container {
  height: 100%;
  width: 100%;
  -webkit-animation: pop-in 0.5s 1s both cubic-bezier(0.58, 0.68, 0.71, 1.41);
          animation: pop-in 0.5s 1s both cubic-bezier(0.58, 0.68, 0.71, 1.41);
}
.leif__eye-closed {
  -webkit-animation: blink-closed 8s infinite steps(1);
          animation: blink-closed 8s infinite steps(1);
  border: calc(10 * var(--unit)) solid var(--stroke);
  -webkit-clip-path: polygon(0 45%, 100% 60%, 100% 100%, 0 100%);
  clip-path: polygon(0 45%, 100% 60%, 100% 100%, 0 100%);
  border-radius: 50%;
}
.leif__eye-closed--left {
  height: 18%;
  left: 12%;
  width: 14%;
  bottom: 51%;
}
.leif__eye-closed--right {
  height: 19%;
  left: 48%;
  width: 16%;
  bottom: 45%;
}
.leif__arch {
  height: 100%;
  width: 100%;
  border-radius: 50%;
  background: var(--backdrop);
  bottom: 12%;
  border: var(--stroke-border);
}
.leif__eye-open {
  -webkit-animation: blink-open 8s infinite steps(1);
          animation: blink-open 8s infinite steps(1);
}
.leif__eye-open--left {
  height: 18%;
  left: 12%;
  width: 14%;
  border-radius: 50%;
  background: var(--eye);
  bottom: 51%;
}
.leif__eye-open--left:after {
  content: '';
  position: absolute;
  top: 35%;
  left: 60%;
  height: 50%;
  width: 50%;
  transform: translate(-50%, -50%);
  border-radius: 50%;
  background: var(--pupil);
}
.leif__eye-open--right {
  height: 19%;
  left: 48%;
  width: 16%;
  border-radius: 50%;
  background: var(--eye);
  bottom: 45%;
}
.leif__eye-open--right:after {
  content: '';
  position: absolute;
  top: 34%;
  left: 39%;
  height: 50%;
  width: 50%;
  transform: translate(-50%, -50%);
  border-radius: 50%;
  background: var(--pupil);
}
.leif__pot {
  height: 17%;
  width: 20%;
  background: var(--stroke);
  left: 32%;
  top: 60%;
  transform: rotate(-4deg);
  -webkit-clip-path: polygon(0 -100%, 100% -100%, 100% 25%, 90% 25%, 70% 100%, 30% 100%, 10% 25%, 0 25%);
  clip-path: polygon(0 -100%, 100% -100%, 100% 25%, 90% 25%, 70% 100%, 30% 100%, 10% 25%, 0 25%);
}
.leif__pot:after,
.leif__pot:before {
  content: '';
  background: var(--pot-color);
  left: 50%;
  transform: translate(-50%, 0);
  z-index: 3;
}
.leif__pot:before {
  height: 15%;
  width: 90%;
  top: 5%;
}
.leif__pot:after {
  bottom: 5%;
  height: 70%;
  width: 90%;
  -webkit-clip-path: polygon(0 -100%, 100% -100%, 100% 25%, 92% -10%, 70% 100%, 30% 100%, 8% -10%, 0 25%);
  clip-path: polygon(0 -100%, 100% -100%, 100% 25%, 92% -10%, 70% 100%, 30% 100%, 8% -10%, 0 25%);
}
.leif__pot .flower__container {
  width: 100%;
  height: 100%;
  left: 0;
  bottom: 0;
  -webkit-animation: grow 2s 2s linear both;
          animation: grow 2s 2s linear both;
}
.leif__pot .flower__show {
  height: 100%;
  width: 100%;
  left: 0;
  bottom: 100%;
  -webkit-clip-path: inset(0 0 0 0);
  clip-path: inset(0 0 0 0);
}
.leif__pot .flower {
  bottom: 0;
  --size: 70;
  --r: 40;
  --hue: 210;
  z-index: -2;
}
.leif__pot .flower:before {
  content: '';
  width: 10%;
  height: 100%;
  background: var(--stroke);
  top: 50%;
  left: 50%;
  transform-origin: 50% 0;
  transform: rotate(calc(var(--r) * -1deg)) translate(-50%, 0);
}
.leif__arm--right {
  left: 56%;
  top: 58%;
  height: 15%;
  transform: rotate(7deg);
  width: 9%;
  border: var(--stroke-border);
  border-radius: 30% 70%;
  background: var(--fur-color);
}
.leif__body {
  height: 50%;
  width: 27%;
  background: var(--outfit);
  top: 50%;
  left: 36%;
  border: var(--stroke-border);
  border-radius: 40% 60% 50% 50%/62% 62% 30% 30%;
}
.leif__body:after,
.leif__body:before {
  content: '';
}
.leif__body:before {
  height: 20%;
  width: 100%;
  top: 15%;
  left: 0;
  background: var(--fur-color);
  -webkit-clip-path: polygon(0 50%, 25% 0, 100% 0, 100% 100%, 0 100%);
  clip-path: polygon(0 50%, 25% 0, 100% 0, 100% 100%, 0 100%);
}
.leif__body:after {
  width: 25%;
  height: 30%;
  border: var(--stroke-border);
  border-radius: 50%;
  right: 10%;
  top: 10%;
  background: var(--outfit);
  transform: rotate(12deg) translate(15%, 0);
}
.leif__forearm {
  height: 8%;
  width: 20%;
  background: var(--fur-color);
  border: var(--stroke-border);
  top: 65.25%;
  left: 42%;
  transform-origin: 100% 50%;
  transform: rotate(-8deg);
  border-radius: 30% 0 0 30%/25% 0 0 25%;
  -webkit-clip-path: polygon(-50% 0, 90% 0, 96% 100%, -50% 100%);
  clip-path: polygon(-50% 0, 90% 0, 96% 100%, -50% 100%);
}
.leif__forearm .claw {
  width: 35%;
  height: 35%;
  border-radius: 50%;
  background: var(--stroke);
  top: calc(var(--t, 5) * 1%);
  right: 95%;
  transform-origin: 100% 50%;
  transform: rotate(calc(var(--r, 1) * 1deg));
  -webkit-clip-path: polygon(0 50%, 100% 0, 100% 100%);
  clip-path: polygon(0 50%, 100% 0, 100% 100%);
}
.leif__forearm .claw:nth-of-type(2) {
  --t: 30;
  --r: -3;
}
.leif__forearm .claw:nth-of-type(3) {
  --t: 60;
  --r: 2;
}
.leif__head {
  top: 13.5%;
  width: 62%;
  height: 48%;
  left: 51.5%;
  transform: translate(-50%, 0%);
  background: var(--fur-color);
  border-radius: 50%/50%;
  border: var(--stroke-border);
}
.leif__face {
  bottom: 7%;
  left: 3%;
  height: 85%;
  width: 83.5%;
  border-radius: 47% 50% 61% 52%/48% 57% 54% 56%;
  overflow: hidden;
}
.leif__face-border {
  height: 100%;
  width: 100%;
}
.leif__face-border div:nth-of-type(1) {
  height: 74%;
  width: 47%;
  background: var(--face);
  border-radius: 50%;
  top: 6%;
  left: -1%;
  transform: rotate(17deg);
}
.leif__face-border div:nth-of-type(2) {
  background: var(--face);
  top: 4%;
  transform: rotate(-44deg);
  right: 4%;
  border-radius: 50%;
  height: 84%;
  width: 51%;
}
.leif__face-border div:nth-of-type(3) {
  height: 150%;
  width: 200%;
  top: 50%;
  left: 50%;
  background: var(--face);
  transform: translate(-50%, 0);
}
.leif__face-patch {
  height: 150%;
  width: 100%;
  top: 40%;
  left: 50%;
  background: var(--face);
  transform: translate(-50%, 0);
  -webkit-clip-path: polygon(0 15%, 8% 2%, 15% 9%, 26% 9%, 31% 0, 50% 0, 53% 11%, 68% 15%, 77% 8%, 100% 42%);
  clip-path: polygon(0 15%, 8% 2%, 15% 9%, 26% 9%, 31% 0, 50% 0, 53% 11%, 68% 15%, 77% 8%, 100% 42%);
}
.leif__nose {
  background: var(--lip-color);
  top: 50%;
  left: 27%;
  border-radius: 50%/50%;
  height: 16%;
  width: 18%;
  transform: rotate(10deg);
}
.leif__nose:after,
.leif__nose:before {
  content: '';
  width: 13%;
  height: 34%;
  background: #404040;
  border-radius: 50%/25%;
}
.leif__nose:after {
  left: 31%;
  top: 35%;
}
.leif__nose:before {
  left: 59%;
  top: 37%;
}
.leif__cheek {
  background: var(--cheek-color);
  border-radius: 50% 50% 40% 60%/50% 50% 50% 50%;
}
.leif__cheek--left {
  height: 20%;
  width: 10%;
  top: 52%;
  left: 4%;
}
.leif__cheek--right {
  height: 20%;
  width: 16%;
  top: 62%;
  right: 18%;
}
.leif__mouth-patch {
  width: 50%;
  height: 5%;
  background: var(--face);
  bottom: 36%;
  left: 14%;
  transform-origin: 0 100%;
  transform: rotate(5deg);
}
.leif__arm--left {
  height: 30%;
  width: 8%;
  top: 56%;
  background: var(--fur-color);
  border: var(--stroke-border);
  left: 40%;
  border-radius: 100% 0 50% 50%/50%;
  transform-origin: 50% 0;
  transform: rotate(34deg);
}
.leif__arm--left .claw {
  height: 13%;
  width: 10%;
  background: var(--stroke);
  border-radius: 50%;
  top: 95%;
  left: calc(var(--x, 26) * 1%);
}
.leif__arm--left .claw:nth-of-type(2) {
  --x: 37;
}
.leif__arm--left .claw:nth-of-type(3) {
  --x: 50;
}
.leif__mouth {
  width: 45%;
  height: 26%;
  background: var(--face);
  bottom: 12%;
  left: 14%;
  -webkit-clip-path: polygon(0 5%, 100% 17%, 100% 100%, 0 100%);
  clip-path: polygon(0 5%, 100% 17%, 100% 100%, 0 100%);
}
.leif__mouth > div:nth-of-type(1) {
  background: var(--lip-color);
  width: 150%;
  height: 200%;
  bottom: 0;
  left: 50%;
  transform-origin: bottom center;
  transform: translate(-50%, 0) rotate(4deg);
  border-radius: 0 0 50% 50%/0 0 100% 100%;
}
.leif__mouth > div:nth-of-type(2) {
  background: #000;
  bottom: 21%;
  width: 133%;
  height: 200%;
  border-radius: 0 0 50% 50%/0 0 100% 100%;
  left: 50%;
  transform-origin: bottom center;
  transform: translate(-50%, 0) rotate(4deg);
  overflow: hidden;
  -webkit-clip-path: polygon(50% 50%, 87% 100%, 10% 100%);
  clip-path: polygon(50% 50%, 87% 100%, 10% 100%);
}
.leif__mouth > div:nth-of-type(2):after {
  content: '';
  height: 10%;
  width: 26%;
  border-radius: 50% 50% 0 0/100% 100% 0 0;
  bottom: -2%;
  left: 50%;
  transform: translate(-50%, 0);
  background: var(--tongue-color);
}
.leif__mouth > div:nth-of-type(3) {
  background: var(--lip-color);
  bottom: 43%;
  width: 185%;
  height: 200%;
  left: 50%;
  transform-origin: bottom center;
  transform: translate(-50%, 0) rotate(4deg);
  border-radius: 0 0 50% 50%/0 0 100% 100%;
}
.leif__mouth > div:nth-of-type(4) {
  background: var(--face);
  bottom: 62%;
  width: 185%;
  height: 200%;
  left: 50%;
  transform-origin: bottom center;
  transform: translate(-50%, 0) rotate(4deg);
  border-radius: 0 0 50% 50%/0 0 100% 100%;
}
.leif__mouth > div:nth-of-type(5) {
  left: 0%;
  top: 0;
  height: 100%;
  width: 21%;
  border-top: calc(10 * var(--unit)) solid var(--face);
  border-radius: 50%;
  transform: rotate(-49deg) translate(27%, -5%);
}
.leif__mouth > div:nth-of-type(6) {
  right: 0%;
  top: 0;
  height: 100%;
  width: 24%;
  border-top: calc(10 * var(--unit)) solid var(--face);
  border-radius: 50%;
  transform: rotate(52deg) translate(0%, 5%);
}
.leif__eye--left {
  height: 40%;
  width: 30%;
  top: 22%;
  background: var(--face);
  overflow: hidden;
}
.leif__eye--left > div {
  background: var(--eye-shade);
  height: 111%;
  width: 107%;
  right: 0;
  top: 0;
  border-radius: 65% 30% 50% 50%/78% 36% 50% 0%;
}
.leif__eye--left > div > div:nth-of-type(1) {
  background: var(--face);
  height: 100%;
  width: 100%;
  border-radius: 65% 30% 50% 50%/78% 36% 50% 0%;
  top: 29%;
  left: 6%;
  transform: rotate(4deg);
}
.leif__eye--left > div > div:nth-of-type(2) {
  background: var(--eye-shade);
  width: 68%;
  height: 68%;
  border-radius: 50%;
  right: 0;
}
.leif__eye--right {
  background: var(--face);
  height: 45%;
  width: 52%;
  left: 50%;
  top: 31%;
  transform: rotate(52deg);
  overflow: hidden;
}
.leif__eye--right > div {
  background: var(--eye-shade);
  height: 131%;
  width: 138%;
  left: 0;
  top: 3%;
  border-radius: 50% 50% 0 100%/50% 30% 0 55%;
}
.leif__eye--right > div > div:nth-of-type(1) {
  background: var(--face);
  height: 109%;
  width: 87%;
  transform: rotate(19deg) translate(10%, 19%);
  border-radius: 50% 50% 0 0/100% 100% 0 0;
}
.leif__eye--right > div > div:nth-of-type(2) {
  background: var(--eye-shade);
  height: 57%;
  width: 35%;
  border-radius: 50%;
  top: 16%;
  left: 0;
}
.leif__eye--right > div > div:nth-of-type(2):after {
  content: '';
  height: 27%;
  width: 36%;
  border-radius: 50%;
  border-top: calc(5 * var(--unit)) solid var(--eye-shade);
  left: 92%;
  top: 17%;
  transform: rotate(-60deg);
}
.leif__cap {
  height: 20%;
  width: 30%;
  left: 39%;
  top: 1%;
}
.leif__cap > div:nth-of-type(1) {
  right: 0;
  top: 0;
  width: 90%;
  height: 150%;
  border-radius: 50%;
  border: var(--stroke-border);
  background: var(--cap-color);
}
.leif__cap > div:nth-of-type(1) > div {
  background: var(--cap-color);
  height: 10%;
  width: 17%;
  border-radius: 50%;
  top: 13%;
  left: 31%;
}
.leif__cap > div:nth-of-type(1) > div:nth-of-type(1) {
  z-index: 2;
}
.leif__cap > div:nth-of-type(1) > div:nth-of-type(2),
.leif__cap > div:nth-of-type(1) > div:nth-of-type(3),
.leif__cap > div:nth-of-type(1) > div:nth-of-type(4),
.leif__cap > div:nth-of-type(1) > div:nth-of-type(5),
.leif__cap > div:nth-of-type(1) > div:nth-of-type(6) {
  background: var(--cap-accent);
  transform: translate(calc(var(--x, 0) * 1%), calc(var(--y, 0) * 1%)) rotate(calc(var(--r, 0) * 1deg));
}
.leif__cap > div:nth-of-type(1) > div:nth-of-type(2) {
  --x: -55;
  --y: -5;
}
.leif__cap > div:nth-of-type(1) > div:nth-of-type(3) {
  --x: 22;
  --y: -70;
  --r: 120;
  height: 12%;
}
.leif__cap > div:nth-of-type(1) > div:nth-of-type(4) {
  --x: 85;
  --y: -5;
  --r: -20;
  height: 11%;
}
.leif__cap > div:nth-of-type(1) > div:nth-of-type(5) {
  --x: 30;
  --y: 80;
  --r: 60;
  height: 11%;
}
.leif__cap > div:nth-of-type(1) > div:nth-of-type(6) {
  --x: -50;
  --y: 80;
  --r: 130;
  height: 11%;
}
.leif__cap > div:nth-of-type(2) {
  width: 107%;
  height: 62%;
  top: 48%;
  border: var(--stroke-border);
  border-radius: 50%;
  transform: rotate(17deg) translate(-1%, 1%);
  background: var(--peak-color);
}
.flower {
  --petal-color: hsl(var(--hue), 100%, 50%);
  height: calc(var(--size, 125) * var(--unit));
  width: calc(var(--size, 125) * var(--unit));
  bottom: 1%;
  left: 50%;
  transform: translate(-50%, 0) translate(calc(var(--x, 0) * 1%), calc(var(--y, 0) * 1%)) rotate(calc(var(--r, 0) * 1deg));
}
.flower__core {
  top: 50%;
  left: 50%;
  height: 30%;
  width: 30%;
  border-radius: 50%;
  border: var(--stroke-border);
  transform: translate(-50%, -50%);
  background: var(--flower-core);
  transform-style: preserve-3d;
}
.flower__core:after,
.flower__core:before {
  content: '';
  height: 25%;
  width: 220%;
  background: var(--stroke);
  border-radius: 5%/50%;
  top: 50%;
  left: 50%;
  transform: translate3d(-50%, -50%, -1px);
}
.flower__core:after {
  transform: translate3d(-50%, -50%, -1px) rotate(90deg);
}
.flower__petal {
  height: 50%;
  width: 50%;
  top: 0;
  left: 50%;
  transform: translate(-50%, 0);
  transform-origin: 50% 100%;
  -webkit-clip-path: polygon(-50% 0, 50% 100%, 150% 0);
  clip-path: polygon(-50% 0, 50% 100%, 150% 0);
}
.flower__petal:after {
  content: '';
  width: 60%;
  left: 50%;
  height: 100%;
  border-radius: 50%;
  border-top: calc(10 * var(--unit)) solid var(--petal-color, var(--default-petal-color));
  transform-origin: 50% 0;
  transform: translate(-50%, 0) rotate(180deg) translate(0, -34%);
  -webkit-clip-path: inset(0 0 80% 0);
  clip-path: inset(0 0 80% 0);
}
.flower__petal--0 {
  transform: translate(-50%, 0) rotate(0deg);
}
.flower__petal--1 {
  transform: translate(-50%, 0) rotate(90deg);
}
.flower__petal--2 {
  transform: translate(-50%, 0) rotate(180deg);
}
.flower__petal--3 {
  transform: translate(-50%, 0) rotate(270deg);
}
.flower__petal > div:nth-of-type(1) {
  left: 50%;
  width: 60%;
  height: 100%;
  bottom: 0;
  border-radius: 50%/25%;
  background: var(--stroke);
  transform-origin: 50% 100%;
  transform: translate(-50%, 0) rotate(-23deg) translate(0, 0);
}
.flower__petal > div:nth-of-type(2) {
  left: 50%;
  width: 60%;
  height: 100%;
  border-radius: 50%/25%;
  background: var(--stroke);
  transform-origin: 50% 100%;
  transform: translate(-50%, 0) rotate(23deg) translate(0, 0);
}
.flower__petal > div:nth-of-type(2):after {
  content: '';
  height: 100%;
  width: 100%;
  border-top: calc(10 * var(--unit)) solid var(--stroke);
  border-radius: 50%;
  transform-origin: 50% 0;
  transform: rotate(-23deg) rotate(-180deg) translate(65%, -18%);
  -webkit-clip-path: inset(0 0 81% 0);
  clip-path: inset(0 0 81% 0);
}
.flower__petal > div:nth-of-type(3) {
  left: 50%;
  width: 100%;
  height: 100%;
  bottom: 0;
  transform: translate(-50%, 0);
  -webkit-clip-path: polygon(-34% 0, 50% 90%, 134% 0);
  clip-path: polygon(-34% 0, 50% 90%, 134% 0);
}
.flower__petal > div:nth-of-type(3):after,
.flower__petal > div:nth-of-type(3):before {
  content: '';
  height: 100%;
  width: 43%;
  left: 50%;
  bottom: 0;
  border-radius: 50%/25%;
  background: var(--petal-color, var(--default-petal-color));
}
.flower__petal > div:nth-of-type(3):before {
  transform: translate(-50%, 0) rotate(37deg) translate(27%, 0%);
}
.flower__petal > div:nth-of-type(3):after {
  transform: translate(-50%, 0) rotate(-37deg) translate(-27%, 0%);
}
.flower--1 {
  --hue: 190;
  --x: 0;
  --y: 0;
  --size: 125;
  --r: 0;
}
.flower--2 {
  --hue: 320;
  --x: 140;
  --y: -75;
  --size: 75;
  --r: 40;
}
.flower--3 {
  --hue: 30;
  --x: -140;
  --y: -75;
  --size: 75;
  --r: 80;
}
.flower--4 {
  --hue: 0;
  --x: -170;
  --y: -85;
  --size: 105;
  --r: 85;
}
.flower--5 {
  --hue: 260;
  --x: 170;
  --y: -85;
  --size: 105;
  --r: -85;
}
.leaf {
  left: calc(var(--x) * 1%);
  top: calc(var(--y) * 1%);
  height: 14%;
  width: 7%;
  transform-origin: 50% 100%;
  transform: rotate(calc(var(--r) * 1deg)) scale(var(--scale, 1)) rotateY(calc(var(--flip, 0) * 180deg));
}
.leaf > div:nth-of-type(1) {
  border-radius: 90% 10% 50% 50%/75% 10% 50% 25%;
  height: 100%;
  width: 100%;
  background: var(--stroke);
  -webkit-clip-path: polygon(0 0, 103% 0, 50% 50%, 100% 100%, 0 100%);
  clip-path: polygon(0 0, 103% 0, 50% 50%, 100% 100%, 0 100%);
}
.leaf > div:nth-of-type(2) {
  background: var(--leaf-color);
  width: 100%;
  border-radius: 50%;
  height: 100%;
  border-radius: 90% 10% 50% 50%/75% 10% 50% 25%;
  transform: scale(0.7) translate(6%, 0);
  -webkit-clip-path: polygon(0 0, 90% 0, 75% 50%, 100% 100%, 0 100%);
  clip-path: polygon(0 0, 90% 0, 75% 50%, 100% 100%, 0 100%);
}
.leaf > div:nth-of-type(3) {
  height: 100%;
  width: 100%;
  left: 100%;
  top: 0;
  border-left: var(--stroke-border);
  border-width: calc(10 * var(--unit));
  transform-origin: bottom center;
  border-radius: 90% 10% 50% 50%/75% 10% 50% 25%;
  transform: translate(-15%, 0) rotate(-18deg);
  -webkit-clip-path: polygon(0 0, 71% 0, 100% 41%, 9% 81%);
  clip-path: polygon(0 0, 71% 0, 100% 41%, 9% 81%);
}
.leaf--1 {
  --x: 8;
  --y: 52;
  --r: 5;
  --flip: 0;
  --scale: 1;
}
.leaf--2 {
  --x: 9;
  --y: 56;
  --r: -45;
  --flip: 1;
  --scale: 1.1;
}
.leaf--3 {
  --x: 23;
  --y: 68;
  --r: -85;
  --flip: 0;
  --scale: 1;
}
.leaf--4 {
  --x: 26;
  --y: 67;
  --r: 70;
  --flip: 1;
  --scale: 1.05;
}
.leaf--5 {
  --x: 24;
  --y: 68;
  --r: -140;
  --flip: 0;
  --scale: 1;
}
.leaf--6 {
  --x: 66;
  --y: 66;
  --r: -65;
  --flip: 0;
  --scale: 1;
}
.leaf--7 {
  --x: 71;
  --y: 68;
  --r: 145;
  --flip: 1;
  --scale: 1;
}
.leaf--8 {
  --x: 71;
  --y: 68;
  --r: 90;
  --flip: 1;
  --scale: 1;
}
.leaf--9 {
  --x: 84;
  --y: 52;
  --r: 5;
  --flip: 1;
  --scale: 1;
}
.leaf--10 {
  --x: 86;
  --y: 52;
  --r: 40;
  --flip: 1;
  --scale: 1;
}
.star {
  height: calc(20 * var(--unit));
  width: calc(20 * var(--unit));
  top: calc(var(--y, 50) * 1%);
  left: calc(var(--x, 50) * 1%);
  -webkit-animation: sparkle 2s calc(var(--d, 0) * 1s) infinite both;
          animation: sparkle 2s calc(var(--d, 0) * 1s) infinite both;
}
.star:after,
.star:before {
  content: '';
  height: 100%;
  width: 40%;
  border-radius: 50%/25%;
  background: #fff;
  left: 50%;
  top: 0;
  transform: translate(-50%, 0) rotate(calc(var(--r, 0) * 1deg));
}
.star:after {
  --r: 90;
}
.star--1 {
  --x: 30;
  --y: 90;
  --d: 2.25;
}
.star--2 {
  --x: 4;
  --y: 51;
  --d: 2;
}
.star--3 {
  --x: 92;
  --y: 49;
  --d: 3;
}
.star--4 {
  --x: 66;
  --y: 92;
  --d: 2.5;
}
@-webkit-keyframes pop-in {
  from {
    transform: translate(0, 100%);
  }
}
@keyframes pop-in {
  from {
    transform: translate(0, 100%);
  }
}
@-webkit-keyframes sparkle {
  0%, 50%, 100% {
    transform: scale(0) rotate(0);
  }
  25% {
    transform: scale(1.2) rotate(450deg);
  }
}
@keyframes sparkle {
  0%, 50%, 100% {
    transform: scale(0) rotate(0);
  }
  25% {
    transform: scale(1.2) rotate(450deg);
  }
}
@-webkit-keyframes grow {
  from {
    transform: translate(0, 100%);
  }
}
@keyframes grow {
  from {
    transform: translate(0, 100%);
  }
}
@-webkit-keyframes blink-open {
  0%, 10%, 40%, 100% {
    transform: scale(1);
  }
  25% {
    transform: scale(0);
  }
}
@keyframes blink-open {
  0%, 10%, 40%, 100% {
    transform: scale(1);
  }
  25% {
    transform: scale(0);
  }
}
@-webkit-keyframes blink-closed {
  0%, 10%, 40%, 100% {
    transform: scale(0);
  }
  25% {
    transform: scale(1);
  }
}
@keyframes blink-closed {
  0%, 10%, 40%, 100% {
    transform: scale(0);
  }
  25% {
    transform: scale(1);
  }
}


    </style>
</head>
<body>
    
<div class="leif">
    <div class="leif__arch"></div>
    <div class="leif__himself">
        <div class="leif__container">
        <div class="leif__body"></div>
        <div class="leif__arm--left">
            <div class="claw"></div>
            <div class="claw"></div>
            <div class="claw"></div>
        </div>
        <div class="leif__arm--right"></div>
        <div class="leif__cap">
            <div>
            <div></div>
            <div></div>
            <div></div>
            <div></div>
            <div></div>
            <div></div>
            </div>
            <div></div>
        </div>
        <div class="leif__head">
            <div class="leif__face">
            <div class="leif__face-border">
                <div></div>
                <div></div>
                <div></div>
            </div>
            <div class="leif__eye leif__eye--right">
                <div>
                <div></div>
                <div></div>
                </div>
            </div>
            <div class="leif__eye leif__eye--left">
                <div>
                <div></div>
                <div></div>
                </div>
            </div>
            <div class="leif__face-patch"></div>
            <div class="leif__mouth">
                <div></div>
                <div></div>
                <div></div>
                <div></div>
                <div></div>
                <div></div>
            </div>
            <div class="leif__mouth-patch"></div>
            <div class="leif__nose"></div>
            <div class="leif__cheek leif__cheek--left"></div>
            <div class="leif__cheek leif__cheek--right"></div>
            </div>
            <div class="leif__eye-open leif__eye-open--left"></div>
            <div class="leif__eye-open leif__eye-open--right"></div>
            <div class="leif__eye-closed leif__eye-closed--left"></div>
            <div class="leif__eye-closed leif__eye-closed--right"></div>
        </div>
        <div class="leif__pot">
            <div class="flower__show">
            <div class="flower__container">
                <div class="flower flower--undefined">
                <div class="flower__petal flower__petal--0">
                    <div></div>
                    <div></div>
                    <div></div>
                    <div></div>
                </div>
                <div class="flower__petal flower__petal--1">
                    <div></div>
                    <div></div>
                    <div></div>
                    <div></div>
                </div>
                <div class="flower__petal flower__petal--2">
                    <div></div>
                    <div></div>
                    <div></div>
                    <div></div>
                </div>
                <div class="flower__petal flower__petal--3">
                    <div></div>
                    <div></div>
                    <div></div>
                    <div></div>
                </div>
                <div class="flower__core"></div>
                </div>
            </div>
            </div>
        </div>
        <div class="leif__forearm">
            <div class="claw"></div>
            <div class="claw"></div>
            <div class="claw"></div>
        </div>
        </div>
    </div>
    <div class="leaf leaf--1">
        <div></div>
        <div></div>
        <div></div>
    </div>
    <div class="leaf leaf--2">
        <div></div>
        <div></div>
        <div></div>
    </div>
    <div class="leaf leaf--3">
        <div></div>
        <div></div>
        <div></div>
    </div>
    <div class="leaf leaf--4">
        <div></div>
        <div></div>
        <div></div>
    </div>
    <div class="leaf leaf--5">
        <div></div>
        <div></div>
        <div></div>
    </div>
    <div class="leaf leaf--6">
        <div></div>
        <div></div>
        <div></div>
    </div>
    <div class="leaf leaf--7">
        <div></div>
        <div></div>
        <div></div>
    </div>
    <div class="leaf leaf--8">
        <div></div>
        <div></div>
        <div></div>
    </div>
    <div class="leaf leaf--9">
        <div></div>
        <div></div>
        <div></div>
    </div>
    <div class="leaf leaf--10">
        <div></div>
        <div></div>
        <div></div>
    </div>
    <div class="flower flower--1">
        <div class="flower__petal flower__petal--0">
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        </div>
        <div class="flower__petal flower__petal--1">
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        </div>
        <div class="flower__petal flower__petal--2">
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        </div>
        <div class="flower__petal flower__petal--3">
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        </div>
        <div class="flower__core"></div>
    </div>
    <div class="flower flower--2">
        <div class="flower__petal flower__petal--0">
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        </div>
        <div class="flower__petal flower__petal--1">
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        </div>
        <div class="flower__petal flower__petal--2">
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        </div>
        <div class="flower__petal flower__petal--3">
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        </div>
        <div class="flower__core"></div>
    </div>
    <div class="flower flower--3">
        <div class="flower__petal flower__petal--0">
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        </div>
        <div class="flower__petal flower__petal--1">
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        </div>
        <div class="flower__petal flower__petal--2">
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        </div>
        <div class="flower__petal flower__petal--3">
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        </div>
        <div class="flower__core"></div>
    </div>
    <div class="flower flower--4">
        <div class="flower__petal flower__petal--0">
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        </div>
        <div class="flower__petal flower__petal--1">
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        </div>
        <div class="flower__petal flower__petal--2">
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        </div>
        <div class="flower__petal flower__petal--3">
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        </div>
        <div class="flower__core"></div>
    </div>
    <div class="flower flower--5">
        <div class="flower__petal flower__petal--0">
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        </div>
        <div class="flower__petal flower__petal--1">
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        </div>
        <div class="flower__petal flower__petal--2">
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        </div>
        <div class="flower__petal flower__petal--3">
        <div></div>
        <div></div>
        <div></div>
        <div></div>
        </div>
        <div class="flower__core"></div>
    </div>
    <div class="star star--1"></div>
    <div class="star star--2"></div>
    <div class="star star--3"></div>
    <div class="star star--4"></div>
    </div>

    <script>
        const restart = () => {
        const MARKUP = document.body.innerHTML
        document.body.innerHTML = ''
        requestAnimationFrame(() => (document.body.innerHTML = MARKUP))
        }
        document.body.addEventListener('click', restart)
</script>
</body>
</html>

赞(0)
未经允许不得转载:工具盒子 » 分享一个纯CSS3实现的绘制动画效果:可爱宠物