今天分享一个太阳升起落下的动画场景。
有朋友问我为什么只发代码不做说明,今天我们尝试下对代码进行注解说明一下。
首先这个场景大致的可拆分为4个部分:太阳/月亮,右下角的按钮,天上的云和最显眼的建筑。
我们先做一个按钮,它可以控制整个场景的切换,像下面这样我们定义一个按钮和一个标签,:
<input type="checkbox" id="day-night"><label for="day-night"></label>
写了这个按钮就会出现么,答案是:NO。我们还需要一点点小小的CSS代码:
/* 按钮 */input { display: none; }/*按钮动画效果切换*/input#day-night:checked ~ .content .clouds {top: -10vh;transition: all 3s var(--cbz) 0s;opacity: 1;filter: drop-shadow(1vmin -1vmin 1vmin #fff) drop-shadow(-1vmin 1vmin 5vmin #fff) drop-shadow(20vmin 5vmin 5vmin #fff) drop-shadow(-10vmin -1vmin 3vmin #fff);}input#day-night:checked ~ .content {transition: --glass 3s;--glass: 200deg;}/*标签设置*/label {position: absolute;right: 3vmin;bottom: 3vmin;width: 13vmin;height: 5vmin;background: #0008;border-bottom: 1px solid #fff8;border-top: 1px solid #000;border-radius: 4vmin;cursor: pointer;z-index: 3;}/*标签伪元素before*/label:before {content: "";position: absolute;width: 12vmin;height: 4vmin;background: radial-gradient(circle at 50% 48%, #ffbf00 calc(2vmin - 1px), #fff0 2vmin), radial-gradient(circle at 90% 42%, #fff0 2.5vmin, #e6e6e6 calc(2.5vmin + 1px));border-radius: 2vmin;left: 0.6vmin;top: 0.325vmin;transition: all 0.4s ease 1s;background-repeat: no-repeat;background-size: 4.25vmin 4.25vmin, 4.15vmin 4.15vmin;background-position: 7.85vmin 0, 0vmin 0vmin;}/*标签伪元素after*/label:after {content: "";position: absolute;width: 6vmin;height: 6vmin;border-radius: 100%;left: -0.95vmin;top: -1.1vmin;transition: all 1s var(--cbz) 0s;border: 0.5vmin solid #fffc;box-shadow: 0 0 1vmin 0 #fffc, 0 0 1vmin 0 #fffc inset;}/*选择器,用来设定点击后的样式改变*/input#day-night:checked + label:after {border-color: #ffc71e;box-shadow: 0 0 1vmin 0.25vmin #ffc71e, 0 0 1vmin 0.25vmin #ffc71e inset;}input#day-night:checked + label:after {left: 6.95vmin;transition: all 1s var(--cbz) 0s;}
当然还有全局设置不能忘记:
@property --glass {syntax: '<angle>';inherits: false;initial-value: 337deg;}* {transform-style: preserve-3d;box-sizing: border-box;}body {margin: 0;padding: 0;width: 100vw;height: 100vh;overflow: hidden;display: flex;align-items: flex-end;justify-content: center;--cbz: cubic-bezier(0.68, -0.55, 0.27, 1.55);}
这样一套操作下来,我们就可以得到右下角的按钮,这个时候整体的页面只有下面的按钮:
这样看起来不但丑而且很单调,光秃秃的。不过不要紧,我们接着给它填上背景:
<div class="content"></div>
同样加上一点点CSS代码:
.content {--frame: #070b32;--bush: #181b38;--dot1: radial-gradient(circle at 50% 50%, var(--bush) 0 0.25vmin, #fff0 calc(0.25vmin + 1px) 100%);--dot2: radial-gradient(circle at 50% 50%, var(--bush) 0 0.5vmin, #fff0 calc(0.5vmin + 1px) 100%);--dot3: radial-gradient(circle at 50% 50%, var(--bush) 0 1.15vmin, #fff0 calc(1.15vmin + 1px) 100%);--glass: 337deg;--luz1: hsl(var(--glass) 60% 50% / 60%);--luz2: hsl(var(--glass) 54% 32%);--luz3: hsl(var(--glass) 54% 25%);transition: --glass 3s;width: 80vmin;height: 100vh;display: flex;align-items: flex-end;justify-content: center;animation: start-glass 3s var(--cbz) 0s 1;}.content:before {content: "";position: absolute;width: 100vw;height: 100%;background: linear-gradient(180deg, #000, #080212, #341c5e, #50587e, #0079d9, #39a7ff, #70c6ed 100%);background-repeat: no-repeat;background-size: 100% 300%;background-position: 0% 10%;transform: translateZ(-100vmin);transition: all 3s var(--cbz) 0s;animation: start-bg 3s var(--cbz) 0s 1;}.content:after {content: "";position: absolute;width: 100vw;height: 200%;--s1: radial-gradient(0.1vmin 0.1vmin at 50% 50%, #ffffff, #fff0);--s2: radial-gradient(0.2vmin 0.2vmin at 50% 50%, #ffffff, #fff0);background-image: var(--s1),var(--s1), var(--s1),var(--s2), var(--s2),var(--s1), var(--s2),var(--s1), var(--s2),var(--s1), var(--s2),var(--s1), var(--s2),var(--s1), var(--s1),var(--s2), var(--s2),var(--s1), var(--s1),var(--s2), var(--s1),var(--s1);background-repeat: repeat-x;background-size: 26% 25%, 43.33% 33.33%, 50% 80%, 20% 20%, 33.33% 75.33%, 26% 73%, 39.33% 22%, 33.33% 26%, 31% 32%, 14.33% 35.33%, 18.33% 62.33%, 39.33% 86.33%, 29.33% 69%, 12.33% 30.33%, 29.33% 41.33%, 22.33% 46.33%, 35.33% 27.33%, 22.33% 39.33%, 20.33% 44.33%, 33.33% 56.33%;filter: drop-shadow(0px 0px 2px #fff) drop-shadow(0px 0px 5px #fff);background-position: -8% -10%;transform: translateZ(-100vmin);transition: all 3s var(--cbz) 0s;top: -16vmin;animation: start-stars 3s var(--cbz) 0s 1;}
这里我们给了两个不同的界面,黑夜和白天。如果有同学将这段代码沾进编辑器会发现出现的只有黑夜,点烂了切换按钮也不会变成白天。这是背景这会和按钮并没有关联起来,添加下面代码将它们关联。
input#day-night:checked ~ .content:before {background-position: 0% 90%;transition: all 3s var(--cbz) 0s;}input#day-night:checked ~ .content:after {top: -100%;transition: all 3s var(--cbz) 0s;}
这个时候整体看起来就好多了。
看起来还是有点诡异,明晃晃的天上竟然没有太阳!我的天,这是搞神嘛!
别急,太阳会来的,月亮也会~
搞一个太阳和月亮和简简单单的animation动画:
<div class="moon-sun"></div>
再加上css代码:
.moon-sun {position: absolute;width: 18vmin;height: 18vmin;bottom: 70vmin;margin-left: 90vmin;border-radius: 100%;background-repeat: no-repeat;animation: change-sm 3s var(--cbz) 0s 1;animation-fill-mode: forwards;background: radial-gradient(circle at 45% 55%, #fff -13%, yellow 35%, orange 90%, #fff0 90%);box-shadow: 0 0 6em 3em #ff9800, 0 0 8em 0 #ff9800 inset, 0 0 20px 5px #fdfdfd;--moon:radial-gradient( circle at 26% 71%, #ffffff 8%, #fff0 12% ),radial-gradient( circle at 23% 75%, #ccc 0% 1%, #fff0 10% ),radial-gradient( circle at 14% 42%, #fdfdfd 7%, #fff0 11% ),radial-gradient( circle at 12% 45%, #ccc 0%, #fff0 7% ),radial-gradient( circle at 23% 57%, #f9f9f9 2%, #fff0 6% ),radial-gradient( circle at 22% 58%, #ccc -2%, #fff0 4% ),radial-gradient(circle at 83% 25%, #fff0 10vmin, #fff calc(10vmin + 1px));filter: drop-shadow(0px 1px 6vmin #6493a9) drop-shadow(0px 1px 6vmin #fdfdfd);}input#day-night:checked ~ .content .moon-sun {animation: change-ms 3s var(--cbz) 0s 1 reverse;animation-fill-mode: forwards;}
这样搞了之后还是有点奇怪,为什么呢?因为…
嗯,仔细看一下代码,发现缺少两个月亮的关键帧,加上~
/*月亮*/@keyframes change-sm {0% { bottom: 70vmin; }45%, 55% { bottom: -35vmin; }49% { background: #ffeb3b; filter: drop-shadow(0px 1px 6vmin #ff9800) drop-shadow(0px 1px 6vmin #fdfdfd); }50% { background: var(--moon); }100% { bottom: 70vmin; background: var(--moon);filter: drop-shadow(0px 1px 6vmin #6493a9) drop-shadow(0px 1px 6vmin #fdfdfd); box-shadow: none; }}/*月亮落下*/@keyframes change-ms {0% { bottom: 70vmin; }45%, 55% { bottom: -35vmin; }49% { background: #ffeb3b; filter: drop-shadow(0px 1px 6vmin #ff9800) drop-shadow(0px 1px 6vmin #fdfdfd); }50% { background: var(--moon); }100% { bottom: 70vmin; background: var(--moon);filter: drop-shadow(0px 1px 6vmin #6493a9) drop-shadow(0px 1px 6vmin #fdfdfd); box-shadow: none; }}
月亮出来了,世界得救了~~
下来,我们再搞点云来~
<div class="clouds"></div>
.clouds {position: absolute;top: 75vh;width: 100vw;height: 100%;background: radial-gradient(ellipse at 10% 23%, #fff1 4vmin, #fff0 15vmin),radial-gradient(ellipse at 0% 15%, #fff1 4vmin, #fff0 8vmin), radial-gradient(circle at 6% 17%, #fff1 4vmin, #fff0 8vmin), radial-gradient(ellipse at 4% 16%, #fff1 1vmin, #fff0 5vmin), radial-gradient(circle at 9% 16%, #fff1 1vmin, #fff0 5vmin), radial-gradient(ellipse at 12% 18%, #fff1 1vmin, #fff0 5vmin), radial-gradient(circle at 17% 19%, #fff1 2vmin, #fff0 6vmin), radial-gradient(ellipse at 13% 13%, #fff1 1vmin, #fff0 6vmin), radial-gradient(ellipse at 22% 20%, #fff1 2vmin, #fff0 8vmin), radial-gradient(circle at 4% 22%, #fff1 0vmin, #fff0 4vmin), radial-gradient(circle at 7% 24%, #fff1 0vmin, #fff0 4vmin), radial-gradient(ellipse at 10% 22%, #fff1 0vmin, #fff0 4vmin), radial-gradient(circle at 30% 19%, #fff2 0vmin, #fff0 13vmin), radial-gradient(circle at 26% 13%, #fff1 0vmin, #fff0 4vmin), radial-gradient(circle at 33% 15%, #fff1 -3vmin, #fff0 7vmin), radial-gradient(circle at 45% 19%, #fff1 4vmin, #fff0 14vmin), radial-gradient(circle at 38% 20%, #fff1 -3vmin, #fff0 7vmin), radial-gradient(circle at 52% 20%, #fff1 0vmin, #fff0 6vmin), radial-gradient(circle at 56% 15%, #fff1 0vmin, #fff0 7vmin), radial-gradient(circle at 58% 18%, #fff1 0vmin, #fff0 7vmin), radial-gradient(circle at 41% 26%, #fff1 2vmin, #fff0 8vmin), radial-gradient(circle at 60% 15%, #fff1 0vmin, #fff0 7vmin), radial-gradient(circle at 63% 12%, #fff1 0vmin, #fff0 7vmin), radial-gradient(circle at 63% 21%, #fff1 4vmin, #fff0 15vmin), radial-gradient(circle at 60% 25%, #fff1 2vmin, #fff0 7vmin), radial-gradient(ellipse at 63% 20%, #fff1 0vmin, #fff0 7vmin), radial-gradient(circle at 71% 25%, #fff1 2vmin, #fff0 9vmin), radial-gradient(ellipse at 84% 22%, #fff1 -1vmin, #fff0 8vmin), radial-gradient(ellipse at 78% 25%, #fff1 -1vmin, #fff0 10vmin), radial-gradient(ellipse at 90% 18%, #fff1 -1vmin, #fff0 10vmin), radial-gradient(ellipse at 93% 17%, #fff1 2vmin, #fff0 11vmin), radial-gradient(circle at 79% 17%, #fff1 -3vmin, #fff0 7vmin), radial-gradient(ellipse at 73% 12%, #fff1 -3vmin, #fff0 6vmin), radial-gradient(ellipse at 68% 15%, #fff1 -2vmin, #fff0 9vmin), radial-gradient(ellipse at 95% 25%, #fff1 -2vmin, #fff0 9vmin), radial-gradient(ellipse at 98% 26%, #fff1 -2vmin, #fff0 9vmin), radial-gradient(ellipse at 90% 23%, #fff1 -2vmin, #fff0 9vmin);transform: translateZ(-100vmin);transition: all 3s var(--cbz) 0s;opacity: 0.6;}.clouds span {opacity: 0;}
看看效果:
完美,下来就差房子了.房子比较复杂一些,我们先写一个形状出来
<div class="cuboid floor one"><div class="side"></div><div class="side"></div><div class="side"></div><div class="side"></div><div class="side"></div><div class="side"></div></div>
.cuboid {--width: 20;--depth: 20;--height: 20;--hue: 235;--sat: 25%;height: calc(var(--height) * 1vmin);width: calc(var(--width) * 1vmin);position: absolute;transform: rotateY(-8deg) rotateX(5deg) translateZ(-24vmin);}.cuboid .side {position: absolute;top: 50%;left: 50%;height: 100%;width: 100%;border-radius: 1px;}.cuboid .side:nth-of-type(1) {--sat: 40%;transform: translate3d(-50%, -50%, calc(var(--depth) * 0.5vmin));background: hsl(var(--hue), var(--sat), 18%);}.cuboid .side:nth-of-type(2) {transform: translate3d(-50%, -50%, calc(var(--depth) * -0.5vmin))rotateY(180deg);background: hsl(var(--hue), var(--sat), 35%);}.cuboid .side:nth-of-type(3) {width: calc(var(--depth) * 1vmin);transform: translate(-50%, -50%) rotateY(90deg)translate3d(0, 0, calc(var(--width) * 0.5vmin));background: hsl(var(--hue), var(--sat), 35%);}.cuboid .side:nth-of-type(4) {width: calc(var(--depth) * 1vmin);transform: translate(-50%, -50%) rotateY(-90deg)translate3d(0, 0, calc(var(--width) * 0.5vmin));background: hsl(var(--hue), var(--sat), 40%);}.cuboid .side:nth-of-type(5) {--sat: 60%;height: calc(var(--depth) * 1vmin);transform: translate(-50%, -50%) rotateX(90deg)translate3d(0, 0, calc(var(--height) * 0.5vmin));background: hsl(var(--hue), var(--sat), 10%);}.cuboid .side:nth-of-type(6) {--sat: 60%;height: calc(var(--depth) * 1vmin);transform: translate(-50%, -50%) rotateX(-90deg)translate3d(0, 0, calc(var(--height) * 0.5vmin));background: hsl(var(--hue), var(--sat), 10%);}
看看效果:
下来我们给它加上屋顶和窗子:
<div class="cuboid roof one"><div class="side"><i class="cactus"></i></div><div class="side"></div><div class="side"></div><div class="side"></div><div class="side"></div><div class="side"></div></div>
在小小的修饰一下:
加上一个仙人掌:
i.cactus {background: var(--bush);width: 0.85vmin;height: 2vmin;position: absolute;bottom: 3vmin;left: 3px;border-radius: 100% 100% 10% 45%;transform: rotate(-2deg);}i.cactus:before {content: "";position: absolute;background: var(--bush);width: 0.75vmin;height: 2vmin;bottom: 1.4vmin;left: -0.35vmin;border-radius: 100%;}i.cactus:after {content: "";position: absolute;background: var(--bush);width: 0.5vmin;height: 1.5vmin;bottom: 3vmin;left: 0.075vmin;border-radius: 100%;box-shadow: -0.6vmin 0.2vmin 0 -0.075vmin var(--bush), 0.4vmin 1.5vmin 0 -0.075vmin var(--bush);}
加上百叶窗,让它变得像个房子:
.floor .side:nth-of-type(1):before, .floor .side:nth-of-type(1):after,.floor .side:nth-of-type(3):before, .floor .side:nth-of-type(3):after {position: absolute;content: "";width: 40%;height: 100%;left: 20%;background: repeating-linear-gradient(180deg, #101010, transparent), repeating-linear-gradient(90deg, #383e70 0 calc(100% - 0.25vmin), var(--frame) calc(100% - 0.25vmin) 100%);background-size: 100% 0.365vmin, 8vmin 100%;}.floor .side:nth-of-type(1):after {width: 20%;left: 80.25%;}
再加上地板和玻璃窗子:
.floor {--width: 40;--depth: 89;--height: 8;bottom: -5vmin;left: 16vmin;--lines-front: repeating-linear-gradient(90deg, var(--luz1) 0% calc(100% - 0.275vmin), var(--frame) calc(100% - 0.275vmin) 100%);--lines-side: repeating-linear-gradient(90deg, var(--luz1) 0% calc(100% - 1.5vmin), var(--frame) calc(100% - 1.5vmin) 100%);}.floor .side { border: 3px solid var(--frame); }.floor.two { bottom: 5vmin; }.floor.three { bottom: 15vmin; }.floor.four { bottom: 25vmin; }.floor.five { bottom: 35vmin; }.floor.six { bottom: 45vmin; }.floor.seven { bottom: 55vmin; }.floor.eight { bottom: 65vmin; }.floor .side:nth-of-type(1) {background:conic-gradient(from 116deg at 0 0, var(--luz2) 0 25%, #fff0 0 100%),linear-gradient(31deg, #fff0 60%, var(--luz2) 61%),linear-gradient(31deg, #fff0 20%, var(--luz2) 21%),linear-gradient(31deg, var(--luz1) 65%, var(--luz2) 21%),linear-gradient(90deg, var(--luz1) 19.5%, #fff0 19.5% 20%, var(--luz1) 20.5% 39.5%, #fff0 40% 61%, var(--luz3) 61% 80.25%, #fff0 80% 81%, var(--luz2) 81% 100%);background-size: 2.5% 51%, 19.5% 100%, 19.5% 100%, 19.5% 100%, 100% 100%;background-repeat: no-repeat;background-position: 79.75% 100%, 0 0, 25% 0, 75.4% 0, 0 0;}.floor .side:nth-of-type(3) {background: var(--lines-side), hsl(var(--hue) var(--sat) 75% / 0.5);background-size: 35.45% 100%;}.floor .side:nth-of-type(4) {background: var(--lines-side), hsl(var(--hue) var(--sat) 40% / 0.5);background-size: 35.45% 100%;}span {background: linear-gradient(32deg, #fff0 17%, var(--luz2) 19%), var(--luz1);position: absolute;width: 20%;height: 100%;left: 20%;}
这个时候它是这样的:
已经有点样子,下面我们继续往上盖和加些小物件进去,花,空调,猫,人,屋子里的灯光等就可以.
完整代码:
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>日升月落动画+按钮</title><style>@property --glass {syntax: '<angle>';inherits: false;initial-value: 337deg;}* {transform-style: preserve-3d;box-sizing: border-box;}body {margin: 0;padding: 0;width: 100vw;height: 100vh;overflow: hidden;display: flex;align-items: flex-end;justify-content: center;--cbz: cubic-bezier(0.68, -0.55, 0.27, 1.55);}.content {--frame: #070b32;--bush: #181b38;--dot1: radial-gradient(circle at 50% 50%, var(--bush) 0 0.25vmin, #fff0 calc(0.25vmin + 1px) 100%);--dot2: radial-gradient(circle at 50% 50%, var(--bush) 0 0.5vmin, #fff0 calc(0.5vmin + 1px) 100%);--dot3: radial-gradient(circle at 50% 50%, var(--bush) 0 1.15vmin, #fff0 calc(1.15vmin + 1px) 100%);--glass: 337deg;--luz1: hsl(var(--glass) 60% 50% / 60%);--luz2: hsl(var(--glass) 54% 32%);--luz3: hsl(var(--glass) 54% 25%);transition: --glass 3s;width: 80vmin;height: 100vh;display: flex;align-items: flex-end;justify-content: center;animation: start-glass 3s var(--cbz) 0s 1;}@keyframes start-glass {0% { --glass: 200deg; }100% { --glass: 337deg; }}.content:before {content: "";position: absolute;width: 100vw;height: 100%;background: linear-gradient(180deg, #000, #080212, #341c5e, #50587e, #0079d9, #39a7ff, #70c6ed 100%);background-repeat: no-repeat;background-size: 100% 300%;background-position: 0% 10%;transform: translateZ(-100vmin);transition: all 3s var(--cbz) 0s;animation: start-bg 3s var(--cbz) 0s 1;}.content:after {content: "";position: absolute;width: 100vw;height: 200%;--s1: radial-gradient(0.1vmin 0.1vmin at 50% 50%, #ffffff, #fff0);--s2: radial-gradient(0.2vmin 0.2vmin at 50% 50%, #ffffff, #fff0);background-image: var(--s1),var(--s1), var(--s1),var(--s2), var(--s2),var(--s1), var(--s2),var(--s1), var(--s2),var(--s1), var(--s2),var(--s1), var(--s2),var(--s1), var(--s1),var(--s2), var(--s2),var(--s1), var(--s1),var(--s2), var(--s1),var(--s1);background-repeat: repeat-x;background-size: 26% 25%, 43.33% 33.33%, 50% 80%, 20% 20%, 33.33% 75.33%, 26% 73%, 39.33% 22%, 33.33% 26%, 31% 32%, 14.33% 35.33%, 18.33% 62.33%, 39.33% 86.33%, 29.33% 69%, 12.33% 30.33%, 29.33% 41.33%, 22.33% 46.33%, 35.33% 27.33%, 22.33% 39.33%, 20.33% 44.33%, 33.33% 56.33%;filter: drop-shadow(0px 0px 2px #fff) drop-shadow(0px 0px 5px #fff);background-position: -8% -10%;transform: translateZ(-100vmin);transition: all 3s var(--cbz) 0s;top: -16vmin;animation: start-stars 3s var(--cbz) 0s 1;}input#day-night:checked ~ .content:before {background-position: 0% 90%;transition: all 3s var(--cbz) 0s;}input#day-night:checked ~ .content:after {top: -100%;transition: all 3s var(--cbz) 0s;}@keyframes start-stars {0% { top: -100%; }100% { top: 0%; }}@keyframes start-bg {0% { background-position: 0% 90%; }100% { background-position: 0% 10%; }}.moon-sun {position: absolute;width: 18vmin;height: 18vmin;bottom: 70vmin;margin-left: 90vmin;border-radius: 100%;background-repeat: no-repeat;animation: change-sm 3s var(--cbz) 0s 1;animation-fill-mode: forwards;background: radial-gradient(circle at 45% 55%, #fff -13%, yellow 35%, orange 90%, #fff0 90%);box-shadow: 0 0 6em 3em #ff9800, 0 0 8em 0 #ff9800 inset, 0 0 20px 5px #fdfdfd;--moon:radial-gradient( circle at 26% 71%, #ffffff 8%, #fff0 12% ),radial-gradient( circle at 23% 75%, #ccc 0% 1%, #fff0 10% ),radial-gradient( circle at 14% 42%, #fdfdfd 7%, #fff0 11% ),radial-gradient( circle at 12% 45%, #ccc 0%, #fff0 7% ),radial-gradient( circle at 23% 57%, #f9f9f9 2%, #fff0 6% ),radial-gradient( circle at 22% 58%, #ccc -2%, #fff0 4% ),radial-gradient(circle at 83% 25%, #fff0 10vmin, #fff calc(10vmin + 1px));filter: drop-shadow(0px 1px 6vmin #6493a9) drop-shadow(0px 1px 6vmin #fdfdfd);}input#day-night:checked ~ .content .moon-sun {animation: change-ms 3s var(--cbz) 0s 1 reverse;animation-fill-mode: forwards;}/*月亮*/@keyframes change-sm {0% { bottom: 70vmin; }45%, 55% { bottom: -35vmin; }49% { background: #ffeb3b; filter: drop-shadow(0px 1px 6vmin #ff9800) drop-shadow(0px 1px 6vmin #fdfdfd); }50% { background: var(--moon); }100% { bottom: 70vmin; background: var(--moon);filter: drop-shadow(0px 1px 6vmin #6493a9) drop-shadow(0px 1px 6vmin #fdfdfd); box-shadow: none; }}/*月亮落下*/@keyframes change-ms {0% { bottom: 70vmin; }45%, 55% { bottom: -35vmin; }49% { background: #ffeb3b; filter: drop-shadow(0px 1px 6vmin #ff9800) drop-shadow(0px 1px 6vmin #fdfdfd); }50% { background: var(--moon); }100% { bottom: 70vmin; background: var(--moon);filter: drop-shadow(0px 1px 6vmin #6493a9) drop-shadow(0px 1px 6vmin #fdfdfd); box-shadow: none; }}/* 长方体 */.cuboid {--width: 20;--depth: 20;--height: 20;--hue: 235;--sat: 25%;height: calc(var(--height) * 1vmin);width: calc(var(--width) * 1vmin);position: absolute;transform: rotateY(-8deg) rotateX(5deg) translateZ(-24vmin);}.cuboid .side {position: absolute;top: 50%;left: 50%;height: 100%;width: 100%;border-radius: 1px;}.cuboid .side:nth-of-type(1) {--sat: 40%;transform: translate3d(-50%, -50%, calc(var(--depth) * 0.5vmin));background: hsl(var(--hue), var(--sat), 18%);}.cuboid .side:nth-of-type(2) {transform: translate3d(-50%, -50%, calc(var(--depth) * -0.5vmin))rotateY(180deg);background: hsl(var(--hue), var(--sat), 35%);}.cuboid .side:nth-of-type(3) {width: calc(var(--depth) * 1vmin);transform: translate(-50%, -50%) rotateY(90deg)translate3d(0, 0, calc(var(--width) * 0.5vmin));background: hsl(var(--hue), var(--sat), 35%);}.cuboid .side:nth-of-type(4) {width: calc(var(--depth) * 1vmin);transform: translate(-50%, -50%) rotateY(-90deg)translate3d(0, 0, calc(var(--width) * 0.5vmin));background: hsl(var(--hue), var(--sat), 40%);}.cuboid .side:nth-of-type(5) {--sat: 60%;height: calc(var(--depth) * 1vmin);transform: translate(-50%, -50%) rotateX(90deg)translate3d(0, 0, calc(var(--height) * 0.5vmin));background: hsl(var(--hue), var(--sat), 10%);}.cuboid .side:nth-of-type(6) {--sat: 60%;height: calc(var(--depth) * 1vmin);transform: translate(-50%, -50%) rotateX(-90deg)translate3d(0, 0, calc(var(--height) * 0.5vmin));background: hsl(var(--hue), var(--sat), 10%);}/* 地板 */.floor {--width: 40;--depth: 89;--height: 8;bottom: -5vmin;left: 16vmin;--lines-front: repeating-linear-gradient(90deg, var(--luz1) 0% calc(100% - 0.275vmin), var(--frame) calc(100% - 0.275vmin) 100%);--lines-side: repeating-linear-gradient(90deg, var(--luz1) 0% calc(100% - 1.5vmin), var(--frame) calc(100% - 1.5vmin) 100%);}.floor .side { border: 3px solid var(--frame); }.floor.two { bottom: 5vmin; }.floor.three { bottom: 15vmin; }.floor.four { bottom: 25vmin; }.floor.five { bottom: 35vmin; }.floor.six { bottom: 45vmin; }.floor.seven { bottom: 55vmin; }.floor.eight { bottom: 65vmin; }.floor .side:nth-of-type(1) {background:conic-gradient(from 116deg at 0 0, var(--luz2) 0 25%, #fff0 0 100%),linear-gradient(31deg, #fff0 60%, var(--luz2) 61%),linear-gradient(31deg, #fff0 20%, var(--luz2) 21%),linear-gradient(31deg, var(--luz1) 65%, var(--luz2) 21%),linear-gradient(90deg, var(--luz1) 19.5%, #fff0 19.5% 20%, var(--luz1) 20.5% 39.5%, #fff0 40% 61%, var(--luz3) 61% 80.25%, #fff0 80% 81%, var(--luz2) 81% 100%);background-size: 2.5% 51%, 19.5% 100%, 19.5% 100%, 19.5% 100%, 100% 100%;background-repeat: no-repeat;background-position: 79.75% 100%, 0 0, 25% 0, 75.4% 0, 0 0;}.floor .side:nth-of-type(3) {background: var(--lines-side), hsl(var(--hue) var(--sat) 75% / 0.5);background-size: 35.45% 100%;}.floor .side:nth-of-type(4) {background: var(--lines-side), hsl(var(--hue) var(--sat) 40% / 0.5);background-size: 35.45% 100%;}/* 屋顶 */.roof {--height: 3;--width: 42;--depth: 100;bottom: 3vmin;left: 16vmin;transform: rotateY(-8deg) rotateX(5deg) translateZ(-18vmin);}.roof.two { bottom: 13vmin; }.roof.three { bottom: 23vmin; }.roof.four { bottom: 33vmin; }.roof.five { bottom: 43vmin; }.roof.six { bottom: 53vmin; }.roof.seven { bottom: 63vmin; }.roof.eight { bottom: 73vmin; }/* 空调 */.air-cooler {--height: 3.9;--width: 10;--depth: 52;bottom: 78.5vmin;left: 25vmin;}.air-cooler + .air-cooler {--height: 2.4;--width: 5;--depth: 20;bottom: 78.5vmin;left: 42vmin;transform: rotateY(-8deg) rotateX(5deg) translateZ(-7vmin);}.air-cooler .side:nth-of-type(1) {border: 1px solid #0002;}.air-cooler .side:nth-of-type(1):before {content: "";width: calc(100% - 1vmin);height: calc(100% - 1vmin);position: absolute;background: repeating-linear-gradient(180deg, #000, #0a0d29 , #434770cc);margin: 0.5vmin;background-size: 100% 25%;}/* 窗子 */span {background: linear-gradient(32deg, #fff0 17%, var(--luz2) 19%), var(--luz1);position: absolute;width: 20%;height: 100%;left: 20%;}/* F 2 */.floor.two .side span:before ,.floor.five .side span:before {content: "";position: absolute;width: calc(100% + 2px);height: 30%;top: -1px;left: -1px;background: repeating-linear-gradient(180deg, black, #383e70);background-size: 100% 0.35vmin;box-shadow: 0.01vmin 0.75vmin 0.15vmin 0.125vmin #0005 inset;}/* 百叶窗*/.floor .side:nth-of-type(1):before, .floor .side:nth-of-type(1):after,.floor .side:nth-of-type(3):before, .floor .side:nth-of-type(3):after {position: absolute;content: "";width: 40%;height: 100%;left: 20%;background: repeating-linear-gradient(180deg, #101010, transparent), repeating-linear-gradient(90deg, #383e70 0 calc(100% - 0.25vmin), var(--frame) calc(100% - 0.25vmin) 100%);background-size: 100% 0.365vmin, 8vmin 100%;}.floor .side:nth-of-type(1):after {width: 20%;left: 80.25%;}/* F 1 */.floor.one .side:nth-of-type(1):before,.floor.one .side:nth-of-type(1):after {box-shadow: 0vmin 0.65vmin 0.25vmin 0.25vmin #0006 inset;}.floor.one .side:nth-of-type(1):after {box-shadow: 0vmin 0.65vmin 0.25vmin 0.25vmin #0006 inset, -7.75vmin 0 0 0 #0a0a0a;}/* F 2 */.floor.two .side:nth-of-type(1):before {width: 59.5%;left: 40.75%;box-shadow: 0.2vmin 0.5vmin 0.25vmin 0.25vmin #0006 inset;}.floor.two .side:nth-of-type(1):after {width: 20%;left: -1px;box-shadow: none;box-shadow: 0vmin 0.65vmin 0.25vmin 0.25vmin #0006 inset;background-color: #3d4176;}/* F 3 */.floor.three .side:nth-of-type(1):after {background: #1c1f3e;left: 40.25%;width: 19.75%;box-shadow: 0.2vmin 0.525vmin 0.5vmin 0.125vmin #0006 inset;}.floor.three .side:nth-of-type(1):before {display: none;}/* F 4 */.floor.four .side:nth-of-type(1):before,.floor.eight .side:nth-of-type(1):before {position: absolute;content: "";width: 60%;height: 100%;left: 40%;--luz1: #434770;--lines-front: repeating-linear-gradient(90deg, var(--luz1) 0% calc(100% - 0.275vmin), var(--frame) calc(100% - 0.275vmin) 100%);background: repeating-linear-gradient(90deg, black, transparent), linear-gradient(91deg, #fff0 35%, #000 calc(36% + 1px) 52%, #fff0 52%), linear-gradient(-91deg, #fff0 36%, #000 calc(37% + 1px) 55%, #fff0 55%), var(--lines-front), repeating-linear-gradient(90deg, #364e69, #141f59);background-size: 0.35vmin 100%, 100% 100%, 100% 100%, 33.6% 100%, 4% 100%;z-index: 1;}.floor.four .side:nth-child(1):after {box-shadow: 0.05vmin 0.7vmin 0.25vmin 0.125vmin #0006 inset, 7.5vmin -7.3vmin 0 0 #0a0d29;left: -1px;width: 81%;}.floor.four .side:nth-of-type(1):before {background: repeating-linear-gradient(90deg, black, transparent), linear-gradient(94deg, #fff0 41%, #000 calc(42% + 1px) 52%, #fff0 52%), linear-gradient(-95deg, #fff0 45%, #000 calc(46% + 1px) 55%, #fff0 55%), var(--lines-front), repeating-linear-gradient(90deg, #364e69, #141f59);background-size: 0.375vmin 100%, 100% 100%, 100% 100%, 33.6% 100%, 4% 100%;left: 0;}.roof.four .side:nth-child(1):before {content: "";position: absolute;width: 25%;height: 3vmin;top: -3vmin;left: 25vmin;background: radial-gradient(circle at 13% 98%, var(--luz3) 0.5vmin, #fff0 calc(0.5vmin + 1px)), radial-gradient(circle at 11% 79%, var(--luz3) 0.25vmin, #fff0 calc(0.25vmin + 1px)), radial-gradient(circle at 16% 84%, var(--luz3) 0.125vmin, #fff0 calc(0.125vmin + 1px)), radial-gradient(circle at 21% 95%, var(--luz3) 0.25vmin, #fff0 calc(0.25vmin + 1px)), radial-gradient(circle at 25% 98%, var(--luz3) 0.25vmin, #fff0 calc(0.25vmin + 1px)), radial-gradient(circle at 28% 91%, var(--luz3) 0.175vmin, #fff0 calc(0.175vmin + 1px)), radial-gradient(circle at 30% 84%, var(--luz3) 0.175vmin, #fff0 calc(0.175vmin + 1px)), radial-gradient(circle at 10% 70%, var(--luz3) 0.175vmin, #fff0 calc(0.175vmin + 1px));background-repeat: no-repeat;filter: drop-shadow(2vmin 0vmin 0px var(--luz3)) drop-shadow(3vmin 0vmin 0px var(--luz3));}/* F 5 */.floor.five .side:nth-of-type(1):before {width: 19.25%;left: 40.75%;}.floor.five .side:nth-child(1) span:after {content: "";position: absolute;width: 2vmin;height: 2vmin;top: 4.85vmin;left: 29.7vmin;background: var(--luz3);background-size: 100% 0.35vmin;box-shadow: -2px -20.1vmin 0 0 var(--luz3);color: #601d44;z-index: 3;transform: translateZ(1.8vmin);}.floor.five .side:nth-of-type(1):after {display: none;}.roof.five .side:nth-child(-n+4):before {content: "";position: absolute;width: 100%;height: 3vmin;top: -3vmin;background: var(--dot3), var(--dot2), var(--dot1), var(--dot1), var(--dot1), var(--dot1), var(--dot1), var(--dot1);background-position: -16.2vmin 1.825vmin, -16.7vmin 0.5vmin, -15.72vmin 0.65vmin, -17.57vmin 0.5vmin, -17.2vmin 0.25vmin, -16.5vmin 0.1vmin , -17.4vmin 0.95vmin, -15.175vmin 0.95vmin;background-repeat: no-repeat;filter: drop-shadow(16px 0px 0px var(--bush)) drop-shadow(24vmin 0px 0px var(--bush)) drop-shadow(8vmin 0px 0px var(--bush));}/* F 6 */.floor.six .side:nth-of-type(1):before {left: -0.1vmin;box-shadow: 0.025vmin 0.7vmin 0.25vmin 0.125vmin #0006 inset;width: 40.25%;background: repeating-linear-gradient(90deg, #101010, transparent), repeating-linear-gradient(90deg, #383e70 0 calc(100% - 0.25vmin), var(--frame) calc(100% - 0.25vmin) 100%);background-size: 0.25vmin 100%, 8vmin 100%;}.floor.six .side:nth-of-type(1):after {left: 60%;width: 40%;background: repeating-linear-gradient(90deg, #101010, transparent), repeating-linear-gradient(90deg, #383e70 0 calc(100% - 0.25vmin), var(--frame) calc(100% - 0.25vmin) 100%);background-size: 0.25vmin 100%, 8vmin 100%;}.floor.six .side span {left: 40.5%;width: 19%;background: #0a0a0a;}/* F 7 */.floor.seven .side:nth-of-type(1):after {display: none;}.floor.seven .side:nth-of-type(1):before {box-shadow: 0.15vmin 0.65vmin 0.25vmin 0.125vmin #0006 inset;}/* F 8 */.floor.eight .side:nth-of-type(1):after {width: 60%;left: 40%;box-shadow: 0.025vmin 0.65vmin 0.5vmin 0.25vmin #0006 inset;background: repeating-linear-gradient(180deg, black, transparent);background-size: 100% 4%;}/* 右侧 */.floor .side:nth-of-type(3):before,.floor .side:nth-of-type(3):after{width: 33.95%;box-shadow: 0.025vmin 1.75vmin 0.4vmin 0.125vmin #0006 inset;background-size: 100% 0.365vmin, 33vmin 100%;filter: brightness(1.25);}/* F 1 */.floor.one .side:nth-of-type(3):before,.floor.two .side:nth-of-type(3):before {left: 0;}.floor.one .side:nth-of-type(3):after,.floor.two .side:nth-of-type(3):after {left: 35.25%;}/* F 2 */.floor.two .side:nth-of-type(3) span,.floor.four .side:nth-of-type(3) span {left: 71%;width: 29%;background: linear-gradient(-5deg, #fff0 76%, var(--luz2) calc(76% + 1px)), var(--luz1);}.floor.two .side:nth-of-type(3) span:before {width: 5vmin;bottom: 0.8vmin;top: inherit;background: var(--luz2);box-shadow: none;left: 10vmin;}/* F 3 */.floor.three .side:nth-of-type(3):before, .floor.three .side:nth-of-type(3):after {left: 70.75%;width: 29.25%;}.floor.three .side:nth-of-type(3) span {width: 69.5%;left: 0;background: #fff0;}.floor.three .side:nth-of-type(3) span:before,.floor.three .side:nth-of-type(3) span:after {content: "";position: absolute;width: 48.5%;height: 100%;left: 0;background: linear-gradient(175.25deg, var(--luz2) 51.5%, var(--luz3) calc(51.5% + 1px)), var(--luz1);}.floor.three .side:nth-of-type(3) span:after {left: 51%;background: linear-gradient(175.25deg, var(--luz2) 25%, var(--luz3) calc(25% + 1px)), var(--luz1);}/* F 4 */.floor.four .side:nth-of-type(3):before, .floor.four .side:nth-of-type(3):after {left: 35.25%;background: repeating-linear-gradient(90deg, #1d1e26, transparent), repeating-linear-gradient(90deg, #383e70 0 calc(100% - 0.25vmin), var(--frame) calc(100% - 0.25vmin) 100%);background-size: 2.5vmin 100%, 33vmin 100%;}.floor.four .side:nth-of-type(3):after {left: 0%;background: var(--luz3);box-shadow: none;}.floor.four .side:nth-of-type(3) span:before {content: "";position: absolute;width: 2vmin;bottom: -0.85vmin;border: 2.25vmin solid #fff0;border-left: 5.5vmin solid var(--luz2);border-top: 0.5vmin solid #fff0;left: 6.5vmin;height: 1vmin;border-radius: 100%;transform: rotate(-9deg);filter: drop-shadow(0px 2px 0px var(--luz2));}.floor.four .side:nth-of-type(3) span:after {content: "";position: absolute;width: 3.5vmin;bottom: 2.55vmin;background: var(--luz2);left: 12.02vmin;height: 0.65vmin;border-radius: 100%;}/* F 5 */.floor.five .side:nth-of-type(3):before,.floor.seven .side:nth-of-type(3):before {left: 35.25%;width: 34.25%;top: -1px;background: #2c315a;box-shadow: -1.975vmin 1.75vmin 1.5vmin 0.125vmin #0005 inset, 0.025vmin 1.75vmin 0.4vmin 0.125vmin #0002 inset;}.floor.five .side:nth-of-type(3):after,.floor.seven .side:nth-of-type(3):after {left: 70.75%;width: 29.25%;top: -1px;background: #2c315a;box-shadow: -1.975vmin 1.75vmin 1.5vmin 0.125vmin #0005 inset, 0.025vmin 1.75vmin 0.4vmin 0.125vmin #0002 inset;}.roof.five .side:nth-child(3):before {filter: drop-shadow(3vmin 0px 0px var(--bush)) drop-shadow(6vmin 0px 0px var(--bush)) drop-shadow(10vmin 0px 0px var(--bush)) drop-shadow(-30vmin 0px 0px var(--bush)) drop-shadow(30vmin 1px 0px var(--bush)) drop-shadow(25px -2px 0px var(--bush)) drop-shadow(25px 0px 0px var(--bush));}.floor.five .side:nth-of-type(3) span,.floor.seven .side:nth-of-type(3) span {left: 0%;width: 33.5%;background: conic-gradient(from 180deg at 70% 40%, var(--luz3) 0 23.65%, var(--luz2) 0 100% );}.floor.five .side:nth-of-type(3) span:before {display: none;left: 0%;bottom: 2vmin;top: inherit;width: 66%;background: var(--luz3);box-shadow: none;}/* F 6 */.floor.six .side:nth-of-type(3):before,.floor.six .side:nth-of-type(3):after {left: 0;background: repeating-linear-gradient(90deg, #1d1e26, transparent), repeating-linear-gradient(90deg, #383e70 0 calc(100% - 0.25vmin), var(--frame) calc(100% - 0.25vmin) 100%);background-size: 1.85vmin 100%, 33vmin 100%;}.floor.six .side:nth-of-type(3):after {left: 35.25%;}/* F 8 */.floor.eight .side:nth-of-type(3):before {left: 0;background: repeating-linear-gradient(90deg, #101010, transparent), repeating-linear-gradient(90deg, #383e70 0 calc(100% - 0.25vmin), var(--frame) calc(100% - 0.25vmin) 100%);background-size: 2.55vmin 100%, 33vmin 100%;}.floor.eight .side:nth-of-type(3):after {left: 64vmin;bottom: -19.85vmin;width: 29.65%;background: repeating-linear-gradient(90deg, #1d1e26, transparent), repeating-linear-gradient(90deg, #383e70 0 calc(100% - 0.25vmin), var(--frame) calc(100% - 0.25vmin) 100%);background-size: 1.85vmin 100%, 33vmin 100%;}.floor.eight .side:nth-of-type(3) span {width: 66%;left: 36%;background: linear-gradient(32deg, #fff0 17%, var(--luz2) 19%), var(--luz1);background: #fff0;background: radial-gradient(ellipse at 30% 72%, var(--luz2) 2.5vmin, #fff0 3.5vmin), radial-gradient(circle at 30% 72%, var(--luz2) 1vmin, #fff0 1vmin), radial-gradient(circle at 34% 73%, var(--luz2) 1vmin, #fff0 1vmin), radial-gradient(circle at 32% 75%, var(--luz2) 1vmin, #fff0 1vmin), radial-gradient(circle at 25% 75%, var(--luz2) 1vmin, #fff0 1vmin), radial-gradient(circle at 21% 80%, var(--luz2) 1vmin, #fff0 1vmin), radial-gradient(ellipse at 73% 72%, var(--luz2) 3.5vmin, #fff0 4.5vmin), radial-gradient(circle at 69% 70%, var(--luz2) 1vmin, #fff0 1vmin), radial-gradient(circle at 75% 73%, var(--luz2) 1vmin, #fff0 1vmin), radial-gradient(circle at 65% 75%, var(--luz2) 1vmin, #fff0 1vmin), radial-gradient(circle at 82% 75%, var(--luz2) 1vmin, #fff0 1vmin), radial-gradient(circle at 78% 74%, var(--luz2) 1vmin, #fff0 1vmin);background-repeat: no-repeat;}.floor.eight .side:nth-of-type(3) span:before, .floor.eight .side:nth-of-type(3) span:after {content: "";position: absolute;width: 50.75%;height: 100%;left: -5px;background: linear-gradient(-5deg, #fff0 48.5%, var(--luz2) calc(48.5% + 1px));}.floor.eight .side:nth-of-type(3) span:after {content: "";position: absolute;width: 43%;height: 100%;left: 53%;background: linear-gradient(-5deg, #fff0 75%, var(--luz2) calc(75% + 1px));}/* 人 */i.man {background: radial-gradient(circle at 50% 0.4vmin, var(--bush) 0 0.35vmin, #fff0 calc(0.35vmin + 1px) 100%),radial-gradient(circle at 50% 0.35vmin, #0c0d1c 0 0.35vmin, #fff0 calc(0.35vmin + 1px) 100%), conic-gradient(from 137deg at 50% 0.51vmin, var(--bush) 0 25%, #fff0 0 100%);width: 1.5vmin;height: 3.5vmin;position: absolute;bottom: 1.25vmin;left: 10.5vmin;z-index: 1;transform: rotate(-1deg);border-radius: 1vmin 100% 0 0;}i.man:before {content: "";background: var(--bush);width: 1vmin;height: 1vmin;border-radius: 0.3vmin;position: absolute;bottom: 1.25vmin;left: -0.25vmin;transform: rotate(55deg);}i.man:after {content: "";}.eight .side i.man {left: 39.75vmin;bottom: 0vmin;--bush: #363a5c;transform: translateZ(-90vmin);filter: drop-shadow(1.2px 0px 0px #7d83bfcc);color: #7d83bfcc;background: radial-gradient(circle at 55% 0.9vmin, var(--bush) 0 0.35vmin, #fff0 calc(0.375vmin + 1px) 100%),radial-gradient(circle at 35% 0.8vmin, #0a0d29 0 0.5vmin, #fff0 calc(0.5vmin + 1px) 100%), conic-gradient(from 145deg at 50% 1.2vmin, var(--bush) 0 25%, #fff0 0 100%);height: 4.5vmin;width: 1.125vmin;}.eight .side i.man:before {transform: rotate(-19deg);border-right: 1px solid #ffffffab;left: 0.125vmin;width: 0.45vmin;height: 1.85vmin;background: var(--frame);opacity: 0.5;bottom: 1.125vmin;}/* 猫 */i.cat {background: radial-gradient(circle at 50% 26%, var(--bush) 0 0.35vmin, #fff0 calc(0.35vmin + 1px) 100%), conic-gradient(from 125deg at 100% 0, var(--bush) 0 25%, #fff0 0 100%), conic-gradient(from 136deg at 0 0, var(--bush) 0 25%, #fff0 0 100%);width: 0.75vmin;height: 2.5vmin;position: absolute;bottom: 1.25vmin;left: 2.3vmin;transform: scale(0.85);}i.cat:before {content: "";background: var(--bush);width: 1.8vmin;height: 1.95vmin;border-radius: 100% 39% 0 0;position: absolute;bottom: -0.35vmin;left: -1vmin;}i.cat:after {content: "";background: #fff0;width: 1.65vmin;height: 1.75vmin;border-radius: 100%;border-left: 0.35vmin solid var(--bush);border-bottom: 0.35vmin solid #fff0;border-top: 0.15vmin solid #fff0;position: absolute;bottom: 0.15vmin;left: -1.25vmin;transform: rotate(-20deg);}i.cat + i.cat {transform: rotateY(180deg) scale(0.9);left: 4vmin;}i.cat + i.cat:after {transform: rotate(-27deg) rotateY(180deg);left: -2.6vmin;bottom: -0.2vmin;}/* 花朵 */i.flowers {background: var(--luz3);width: 70%;height: 1vmin;position: absolute;bottom: 1vmin;left: 15%;}i.flowers:before {content: "";position: absolute;background: var(--luz3);width: 0.75vmin;height: 2vmin;bottom: 0;left: 60%;}i.flowers:after {content: "";position: absolute;background: conic-gradient(from -22deg at 50% 100%, var(--luz3) 0 2%, #fff0 0 5%, var(--luz3) 0 7%, #fff0 0 10%, var(--luz3) 0 12%, #fff0 0 100%),radial-gradient(circle at 50% 0.25vmin, var(--luz3) 0 0.25vmin, #fff0 0 100%),radial-gradient(circle at 25% 0.45vmin, var(--luz3) 0 0.25vmin, #fff0 0 100%),radial-gradient(circle at 80% 0.4vmin, var(--luz3) 0 0.25vmin, #fff0 0 100%);width: 1.5vmin;height: 1.5vmin;bottom: 1.5vmin;left: 52%;}/* 仙人掌 */i.cactus {background: var(--bush);width: 0.85vmin;height: 2vmin;position: absolute;bottom: 3vmin;left: 3px;border-radius: 100% 100% 10% 45%;transform: rotate(-2deg);}i.cactus:before {content: "";position: absolute;background: var(--bush);width: 0.75vmin;height: 2vmin;bottom: 1.4vmin;left: -0.35vmin;border-radius: 100%;}i.cactus:after {content: "";position: absolute;background: var(--bush);width: 0.5vmin;height: 1.5vmin;bottom: 3vmin;left: 0.075vmin;border-radius: 100%;box-shadow: -0.6vmin 0.2vmin 0 -0.075vmin var(--bush), 0.4vmin 1.5vmin 0 -0.075vmin var(--bush);}.roof.six .cactus {left: 90%;transform: rotateY(60deg) rotate(-1deg);border-radius: 0% 100%;filter: drop-shadow(-2px 1px 0px #434770cc);}/* 仙人掌 2 */i.cactus2 {background: var(--luz3);width: 0.45vmin;height: 4vmin;position: absolute;bottom: 1vmin;left: 27vmin;border-radius: 100% 100% 0 0;transform: rotate(-7deg);}i.cactus2:before {content: "";position: absolute;background: #fff0;width: 0.75vmin;height: 1vmin;bottom: 1vmin;left: -0.5vmin;border-radius: 0 0 100% 100%;border: 0.5vmin solid var(--luz3);border-top-color: #fff0;border-left-width: 0.35vmin;}i.cactus2:after {content: "";position: absolute;background: var(--luz3);width: 0.4vmin;height: 0.75vmin;bottom: 3.2vmin;left: -0.05vmin;border-radius: 100%;box-shadow: -0.555vmin 0.75vmin 0 0 var(--luz3), 0.75vmin 0.65vmin 0 0 var(--luz3);}i.cactus2 + i.cactus2 {transform: scale(0.85) translate(-2.25vmin, -0.1vmin) rotate(-5deg) rotateY(180deg);}/*衬衫*/i.bush {background: var(--bush);width: 0.95vmin;height: 2vmin;position: absolute;bottom: 3vmin;left: 3px;border-radius: 100% 100% 10% 45%;transform: rotate(-2deg);}i.bush:before {content: "";position: absolute;background: var(--bush);width: 0.5vmin;height: 1.25vmin;bottom: 0.4vmin;left: -0.3vmin;border-radius: 100%;transform: rotate(-24deg);}i.bush:after {content: "";position: absolute;background: var(--bush);width: 0.5vmin;height: 1.5vmin;bottom: 1.7vmin;left: -0.075vmin;border-radius: 100%;box-shadow: -0.36vmin 0.5vmin 0 -0.075vmin var(--bush), 0.4vmin 0.75vmin 0 -0.025vmin var(--bush), 0.3vmin 0.25vmin 0 -0.025vmin var(--bush);transform: rotate(-16deg);}.roof.two .side:nth-child(1) i.bush {filter: drop-shadow(19px 6px 0px var(--luz2));transform: translateZ(-1vmin);}.roof.two .side:nth-child(3) i.bush {left: 91%;bottom: 2.95vmin;transform: rotateY(128deg);border-radius: 100% 100% 10% 40%;filter: drop-shadow(0.85vmin 11vmin 0px var(--bush)) drop-shadow(-2px -1px 0px #5a5d85);}.roof.four .side:nth-child(1) i.bush {transform: rotateY(180deg) scale(0.85) scaleX(0.65) rotate(92deg);border-radius: 100% 100% 10% 40%;bottom: 2.35vmin;left: 4px;filter: drop-shadow(45.55vmin -7px 0px var(--bush)) drop-shadow(-11.75vmin 2px 0px var(--bush));}.roof.six .side:nth-child(1) i.bush {transform: rotateY(180deg) scaleY(1.5) scaleX(0.65) rotate(92deg);border-radius: 100% 100% 10% 40%;bottom: 2.75vmin;left: 5px;filter: drop-shadow(40vmin 0 0px var(--bush)) drop-shadow(12.95vmin -1px 0px var(--bush));}/* 植物 */i.plant {position: absolute;background: linear-gradient(90deg, #fff0 38%, var(--luz2) 38% 61%, #fff0 61%), linear-gradient(180deg, #fff0 40%, var(--luz2) 45%);width: 1vmin;height: 3.5vmin;bottom: 0vmin;left: 5vmin;filter: drop-shadow(6vmin 0.5vmin 0px var(--luz3)) drop-shadow(8vmin 0.25vmin 0vmin var(--luz3)) drop-shadow(7vmin -0.25vmin 0vmin var(--luz3));}i.plant:before, i.plant:after {content: "";position: absolute;background: var(--luz2);width: 0.275vmin;height: 1vmin;transform: rotate(-45deg);border-radius: 100% 100% 0 0;box-shadow: 4px -4px 0 -0.05vmin var(--luz2);bottom: 2.25vmin;}i.plant:after {transform: rotateY(180deg) rotate(-45deg) translate(-0.65vmin, -0.35vmin);}.seven i.plant {left: 77%;--luz2: var(--luz3);filter: drop-shadow(-1.95vmin 0.5vmin 0px var(--luz3)) drop-shadow(-4vmin -0.75vmin 0vmin var(--luz3)) drop-shadow(-3vmin 0.25vmin 0vmin var(--luz3));transform: rotateY(180deg) scale(0.85);}.seven i.plant:after {--luz2: var(--luz3);box-shadow: 4px -4px 0 -0.05vmin var(--luz2), 8px -3px 0 -0.05vmin var(--luz2);}/* 灯 */.lights {position: absolute;width: 52vmin;height: 75vmin;--foco: radial-gradient(circle at 50% 50%, var(--luz1) 0 0.1vmin, #fff0 calc(0.1vmin + 1px) 100%);transform: rotateY(-8deg) rotateX(0deg) translateZ(22vmin) translateX(3vmin);background:var(--foco), var(--foco), var(--foco), var(--foco), var(--foco), var(--foco),var(--foco), var(--foco), var(--foco), var(--foco), var(--foco), var(--foco),var(--foco), var(--foco), var(--foco), var(--foco), var(--foco), var(--foco), var(--foco), var(--foco), var(--foco),var(--foco), var(--foco),var(--foco), var(--foco), var(--foco), var(--foco), var(--foco), var(--foco), var(--foco), var(--foco), var(--foco), var(--foco),var(--foco),var(--foco), var(--foco);background-position:6% 1%, 21% 1%, 11.5% 3.5%, 26% 3.5%, 90% 8%, 17% 6%,6% 15%, 11.5% 17%, 53.5% 15%, 58.5% 17%, 72.5% 17%, 67.5% 15%,6% 42%, 53.5% 42%, 67.5% 42%, 11.5% 44.25%, 26% 44%, 58.5% 44%, 72.5% 44%, 17% 46.5%, 63.5% 46.25%,67.6% 55%, 73% 57%,6% 68.5%, 21% 68.5%, 54% 68.5%, 68% 68.5%, 11.5% 71%, 27% 71%, 58.5% 71%, 73% 71%, 18% 73.5%, 64.5% 73.5%,16.5% 86%,6% 95.5%, 11.5% 98%;background-repeat: no-repeat;background-size: 1vmin 1vmin;}/* 按钮 */input { display: none; }/*按钮动画效果切换*/input#day-night:checked ~ .content .clouds {top: -10vh;transition: all 3s var(--cbz) 0s;opacity: 1;filter: drop-shadow(1vmin -1vmin 1vmin #fff) drop-shadow(-1vmin 1vmin 5vmin #fff) drop-shadow(20vmin 5vmin 5vmin #fff) drop-shadow(-10vmin -1vmin 3vmin #fff);}input#day-night:checked ~ .content {transition: --glass 3s;--glass: 200deg;}/*标签设置*/label {position: absolute;right: 3vmin;bottom: 3vmin;width: 13vmin;height: 5vmin;background: #0008;border-bottom: 1px solid #fff8;border-top: 1px solid #000;border-radius: 4vmin;cursor: pointer;z-index: 3;}/*标签伪元素before*/label:before {content: "";position: absolute;width: 12vmin;height: 4vmin;background: radial-gradient(circle at 50% 48%, #ffbf00 calc(2vmin - 1px), #fff0 2vmin), radial-gradient(circle at 90% 42%, #fff0 2.5vmin, #e6e6e6 calc(2.5vmin + 1px));border-radius: 2vmin;left: 0.6vmin;top: 0.325vmin;transition: all 0.4s ease 1s;background-repeat: no-repeat;background-size: 4.25vmin 4.25vmin, 4.15vmin 4.15vmin;background-position: 7.85vmin 0, 0vmin 0vmin;}/*标签伪元素after*/label:after {content: "";position: absolute;width: 6vmin;height: 6vmin;border-radius: 100%;left: -0.95vmin;top: -1.1vmin;transition: all 1s var(--cbz) 0s;border: 0.5vmin solid #fffc;box-shadow: 0 0 1vmin 0 #fffc, 0 0 1vmin 0 #fffc inset;}/*选择器,用来设定点击后的样式改变*/input#day-night:checked + label:after {border-color: #ffc71e;box-shadow: 0 0 1vmin 0.25vmin #ffc71e, 0 0 1vmin 0.25vmin #ffc71e inset;}input#day-night:checked + label:after {left: 6.95vmin;transition: all 1s var(--cbz) 0s;}/*云*/.clouds {position: absolute;top: 75vh;width: 100vw;height: 100%;background: radial-gradient(ellipse at 10% 23%, #fff1 4vmin, #fff0 15vmin),radial-gradient(ellipse at 0% 15%, #fff1 4vmin, #fff0 8vmin), radial-gradient(circle at 6% 17%, #fff1 4vmin, #fff0 8vmin), radial-gradient(ellipse at 4% 16%, #fff1 1vmin, #fff0 5vmin), radial-gradient(circle at 9% 16%, #fff1 1vmin, #fff0 5vmin), radial-gradient(ellipse at 12% 18%, #fff1 1vmin, #fff0 5vmin), radial-gradient(circle at 17% 19%, #fff1 2vmin, #fff0 6vmin), radial-gradient(ellipse at 13% 13%, #fff1 1vmin, #fff0 6vmin), radial-gradient(ellipse at 22% 20%, #fff1 2vmin, #fff0 8vmin), radial-gradient(circle at 4% 22%, #fff1 0vmin, #fff0 4vmin), radial-gradient(circle at 7% 24%, #fff1 0vmin, #fff0 4vmin), radial-gradient(ellipse at 10% 22%, #fff1 0vmin, #fff0 4vmin), radial-gradient(circle at 30% 19%, #fff2 0vmin, #fff0 13vmin), radial-gradient(circle at 26% 13%, #fff1 0vmin, #fff0 4vmin), radial-gradient(circle at 33% 15%, #fff1 -3vmin, #fff0 7vmin), radial-gradient(circle at 45% 19%, #fff1 4vmin, #fff0 14vmin), radial-gradient(circle at 38% 20%, #fff1 -3vmin, #fff0 7vmin), radial-gradient(circle at 52% 20%, #fff1 0vmin, #fff0 6vmin), radial-gradient(circle at 56% 15%, #fff1 0vmin, #fff0 7vmin), radial-gradient(circle at 58% 18%, #fff1 0vmin, #fff0 7vmin), radial-gradient(circle at 41% 26%, #fff1 2vmin, #fff0 8vmin), radial-gradient(circle at 60% 15%, #fff1 0vmin, #fff0 7vmin), radial-gradient(circle at 63% 12%, #fff1 0vmin, #fff0 7vmin), radial-gradient(circle at 63% 21%, #fff1 4vmin, #fff0 15vmin), radial-gradient(circle at 60% 25%, #fff1 2vmin, #fff0 7vmin), radial-gradient(ellipse at 63% 20%, #fff1 0vmin, #fff0 7vmin), radial-gradient(circle at 71% 25%, #fff1 2vmin, #fff0 9vmin), radial-gradient(ellipse at 84% 22%, #fff1 -1vmin, #fff0 8vmin), radial-gradient(ellipse at 78% 25%, #fff1 -1vmin, #fff0 10vmin), radial-gradient(ellipse at 90% 18%, #fff1 -1vmin, #fff0 10vmin), radial-gradient(ellipse at 93% 17%, #fff1 2vmin, #fff0 11vmin), radial-gradient(circle at 79% 17%, #fff1 -3vmin, #fff0 7vmin), radial-gradient(ellipse at 73% 12%, #fff1 -3vmin, #fff0 6vmin), radial-gradient(ellipse at 68% 15%, #fff1 -2vmin, #fff0 9vmin), radial-gradient(ellipse at 95% 25%, #fff1 -2vmin, #fff0 9vmin), radial-gradient(ellipse at 98% 26%, #fff1 -2vmin, #fff0 9vmin), radial-gradient(ellipse at 90% 23%, #fff1 -2vmin, #fff0 9vmin);transform: translateZ(-100vmin);transition: all 3s var(--cbz) 0s;opacity: 0.6;}.clouds span {opacity: 0;}</style>
</head>
<body>
<!--右下角的按钮-->
<input type="checkbox" id="day-night"><label for="day-night"></label>
<!--主体动画-->
<div class="content">
<!-- 太阳和月亮--><div class="moon-sun"></div>
<!-- 第一层楼--><div class="cuboid floor one"><div class="side"></div><div class="side"></div><div class="side"></div><div class="side"></div><div class="side"></div><div class="side"></div></div>
<!-- 屋顶--><div class="cuboid roof one"><div class="side"><i class="cactus"></i></div><div class="side"></div><div class="side"></div><div class="side"></div><div class="side"></div><div class="side"></div></div><!-- 第二层楼--><div class="cuboid floor two"><div class="side"><span><i class="flowers"></i></span></div><div class="side"></div><div class="side"><span></span></div><div class="side"></div><div class="side"></div><div class="side"></div></div><!-- 屋顶--><div class="cuboid roof two"><div class="side"><i class="bush"></i></div><div class="side"></div><div class="side"><i class="bush"></i></div><div class="side"></div><div class="side"></div><div class="side"></div></div><!-- 第三层楼--><div class="cuboid floor three"><div class="side"></div><div class="side"></div><div class="side"><span></span></div><div class="side"></div><div class="side"></div><div class="side"></div></div><!-- 屋顶--><div class="cuboid roof three"><div class="side"></div><div class="side"></div><div class="side"></div><div class="side"></div><div class="side"></div><div class="side"></div></div><!-- 第四层楼--><div class="cuboid floor four"><div class="side"><i class="man"></i></div><div class="side"></div><div class="side"><span></span></div><div class="side"></div><div class="side"></div><div class="side"></div></div><!-- 屋顶--><div class="cuboid roof four"><div class="side"><i class="bush"></i></div><div class="side"></div><div class="side"></div><div class="side"></div><div class="side"></div><div class="side"></div></div><!-- 第五层楼--><div class="cuboid floor five"><div class="side"><i class="cactus2"></i><i class="cactus2"></i><span></span></div><div class="side"></div><div class="side"><span></span></div><div class="side"></div><div class="side"></div><div class="side"></div></div><!-- 屋顶--><div class="cuboid roof five"><div class="side"><i class="cactus"></i></div><div class="side"></div><div class="side"></div><div class="side"></div><div class="side"></div><div class="side"></div></div><!-- 第六层楼--><div class="cuboid floor six"><div class="side"><span><i class="cat"></i><i class="cat"></i></span></div><div class="side"></div><div class="side"></div><div class="side"></div><div class="side"></div><div class="side"></div></div><!-- 屋顶--><div class="cuboid roof six"><div class="side"><i class="bush"></i></div><div class="side"></div><div class="side"><i class="cactus"></i></div><div class="side"></div><div class="side"></div><div class="side"></div></div><!-- 第七层楼--><div class="cuboid floor seven"><div class="side"><i class="plant"></i></div><div class="side"></div><div class="side"><span></span></div><div class="side"></div><div class="side"></div><div class="side"></div></div><!-- 屋顶--><div class="cuboid roof seven"><div class="side"></div><div class="side"></div><div class="side"></div><div class="side"></div><div class="side"></div><div class="side"></div></div><!-- 第八层楼--><div class="cuboid floor eight"><div class="side"><i class="plant"></i><i class="man"></i></div><div class="side"></div><div class="side"><span></span></div><div class="side"></div><div class="side"></div><div class="side"></div></div><!-- 屋顶--><div class="cuboid roof eight"><div class="side"></div><div class="side"></div><div class="side"></div><div class="side"></div><div class="side"></div><div class="side"></div></div><!--楼顶小空调--><div class="cuboid air-cooler"><div class="side"></div><div class="side"></div><div class="side"></div><div class="side"></div><div class="side"></div><div class="side"></div></div><!--楼顶大空调--><div class="cuboid air-cooler"><div class="side"></div><div class="side"></div><div class="side"></div><div class="side"></div><div class="side"></div><div class="side"></div></div><!--房间里的灯--><div class="lights"></div><!--天上的云--><div class="clouds"></div></div>
</body>
</html>