<div class="animation"> <div class="bread"> <div class="bread-base"></div> <div class="bread-top"></div> <div class="bread-face"> <div class="bread-brows"> <div class="bread-brow"></div> <div class="bread-brow"></div> </div> <div class="bread-eyes"> <div class="bread-eye"> <div class="bread-eye-closed"></div> <div class="bread-eye-open"> <div class="bread-eye-open-iris"></div> </div> </div> <div class="bread-eye"> <div class="bread-eye-closed"></div> <div class="bread-eye-open"> <div class="bread-eye-open-iris"></div> </div> </div> </div> <div class="bread-mouth"></div> <div class="bread-flecks"> <div class="bread-fleck"></div> <div class="bread-fleck"></div> </div> </div> </div> <div class="toaster"> <div class="toaster-base"></div> <div class="toaster-switch"></div> <div class="toaster-face"> <div class="toaster-checks"> <div class="toaster-check"></div> <div class="toaster-check"></div> </div> <div class="toaster-eyes"> <div class="toaster-eye"> <div class="toaster-eye-closed"></div> <div class="toaster-eye-open"> <div class="toaster-eye-open-iris"></div> </div> </div> <div class="toaster-eye"> <div class="toaster-eye-closed"></div> <div class="toaster-eye-open"> <div class="toaster-eye-open-iris"></div> </div> </div> </div> <div class="toaster-mouth"></div> </div> <div class="toaster-foot"> <div class="toaster-pad"></div> <div class="toaster-pad"></div> <div class="toaster-pad"></div> <div class="toaster-pad"></div> </div> <div class="toaster-reflex"></div> <div class="toaster-reflex-top"> <div class="toaster-reflex-top-rounded"></div> </div> </div> <div class="shadow"></div> </div> </div> :root { --animation-duration: 7.4s; --animation: var(--animation-duration) infinite 1s ease-out; --c-brown-dark: #74482c; --c-brown-light: #c28b60; --c-brown-normal: #92613f; --c-dark: #000000; --c-gray: #bdc5d5; --c-light: #ffffff; --c-pink: #fbb5d1; --c-silver-dark: #708a8e; --c-silver-light: #9eb3b8; } html { box-sizing: border-box; } *, *:before, *:after { box-sizing: inherit; } body { margin: 0; display: flex; align-items: center; justify-content: center; flex-direction: column; min-height: 100vh; background: #d8e0ee; } .animation { align-items: center; display: flex; flex-direction: column; height: 530px; justify-content: flex-end; position: relative; width: 344px; } @keyframes toaster { 0%, 62% { transform: none; } 64% { transform: scaleY(1.04); } 66%, 76% { transform: scaleY(0.94); transform-origin: bottom center; } 78% { transform: scaleY(1.18); } 79% { transform: translateY(-44px); } 82% { transform: none; } 84% { transform-origin: bottom left; transform: rotate(-2deg) translateY(-2px); } 86% { transform: none; } 88% { transform-origin: bottom right; transform: rotate(1deg) translateY(-1px); } 90% { transform: none; } } .toaster { --w-toaster: 344px; --h-toaster: 194px; --b-toaster-base: var(--c-silver-light); --b-toaster-shadow: var(--c-silver-dark); --b-toaster-reflex: var(--c-light); height: calc(var(--h-toaster) + 14px); position: relative; width: var(--w-toaster); animation: toaster var(--animation); transition: all 0.3s; display: flex; align-items: center; justify-content: center; } .toaster-base { position: absolute; top: 0; width: var(--w-toaster); height: var(--h-toaster); background: #708a8e; border-radius: 40px 40px 22px 22px; } .toaster-base::before, .toaster-base::after { content: ""; position: absolute; } .toaster-base::before { background: var(--b-toaster-base); border-radius: 40px 40px 22px 22px; height: 100%; right: 0; top: 0; width: 284px; } .toaster-base::after { background: #242c2d; border-radius: 10px; height: 110px; left: 20px; top: 44px; width: 12px; } .toaster-switch { --w-toaster-switch: 60px; --h-toaster-switch: 12px; background: #242c2d; border-radius: 10px; height: var(--h-toaster-switch); left: -10px; position: absolute; top: 80px; width: var(--w-toaster-switch); animation: toasterSwitch var(--animation); } @keyframes toasterSwitch { 0%, 30% { transform: none; } 33%, 79% { transform: translateY(40px); } 80%, 81% { transform: translateY(-14px) scaleY(4); transform-origin: top; } 83%, 84% { transform: translateY(-14px); } 90% { transform: none; } } .toaster-switch::before { content: ""; position: absolute; width: calc(var(--w-toaster-switch) - 14px); height: 100%; background: #4c5964; border-radius: 10px; } @keyframes toasterFace { 0%, 81%, 83% { transform: none; } 82% { transform: scaleY(1.4); transform-origin: top; } } .toaster-face { width: 194px; height: 64px; position: absolute; top: 58px; right: 36px; display: flex; align-items: center; justify-content: center; animation: toasterFace var(--animation); } .toaster-checks { width: 100%; position: absolute; bottom: 2px; display: flex; justify-content: space-between; } .toaster-check { width: 22px; height: 16px; border-radius: 50%; background: #fbb5d1; } .toaster-eyes { position: absolute; display: flex; justify-content: space-around; } .toaster-eye { position: relative; width: 64px; height: 64px; margin: 0 12px; } @keyframes toasterEyeOpen { 0%, 39% { transform: none; opacity: 1; animation-timing-function: step-end; } 40%, 42% { opacity: 0; transform: scaleY(0.8); animation-timing-function: step-end; } 43% { opacity: 1; transform: scaleY(0.8); } 44%, 64% { opacity: 1; transform: none; height: 100%; } 65%, 80% { height: 60%; border-radius: 180px; } 81% { height: 100%; } } .toaster-eye-open { width: 100%; height: 100%; border-radius: 50%; background: #fff; position: relative; overflow: hidden; display: flex; align-items: center; justify-content: center; animation: toasterEyeOpen var(--animation); } @keyframes toasterEyeOpenIris { 0%, 4%, 100% { transform: none; } 5%, 11% { transform: translateY(-16px); } 12%, 52% { transform: none; } 54%, 55% { transform: translateX(4px); } 57%, 59% { transform: translateX(-4px); } 62%, 64% { transform: none; } 65%, 80% { transform: translateY(-4px); } 81% { transform: none; } } .toaster-eye-open-iris { width: 44px; height: 44px; background: #000; border-radius: 50%; animation: toasterEyeOpenIris var(--animation); } @keyframes toasterEyeClosed { 0%, 59% { opacity: 1; } 60%, 100% { opacity: 0; } } .toaster-eye-closed { position: absolute; top: 50%; width: 64px; height: 8px; margin-top: -4px; background: #000; animation: toasterEyeClosed var(--animation); } @keyframes toasterMouth { 0%, 64%, 81% { transform: none; height: 10px; } 65%, 80% { height: 3px; transform: translateY(-16px); } } .toaster-mouth { position: absolute; bottom: 16px; width: 16px; height: 10px; background: #141414; border-radius: 4px 4px 16px 16px; overflow: hidden; animation: toasterMouth var(--animation); } .toaster-mouth::before { content: ""; position: absolute; width: 6px; height: 3px; border-radius: 4px 4px 12px 12px; left: 5px; bottom: 3px; background: #f591b8; } .toaster-foot { width: 100%; position: absolute; bottom: 0; display: flex; padding: 0 12px; justify-content: space-around; } .toaster-pad { width: 48px; height: 14px; background: #000000; position: relative; border-radius: 0 0 10px 10px; } .toaster-pad::before { content: ""; position: absolute; top: 0; right: 0; width: calc(100% - 12px); height: 100%; background: #252d2e; border-radius: inherit; } .toaster-reflex { position: absolute; top: 72px; right: 8px; width: 10px; height: 28px; background: #ffffff; border-radius: 10px; } .toaster-reflex-top { position: absolute; top: 8px; right: 8px; width: 32px; height: 48px; z-index: 1; } .toaster-reflex-top::before, .toaster-reflex-top:after { content: ""; position: absolute; width: 10px; height: 10px; background: #fff; border-radius: 10px; z-index: 1; } .toaster-reflex-top::before { top: 0; left: -5px; } .toaster-reflex-top::after { bottom: -5px; height: 20px; right: 0; } .toaster-reflex-top-rounded { background: blue; position: absolute; z-index: -1; top: 0; width: 100%; height: 100%; background: transparent; border: 10px solid #fff; border-top-right-radius: 60px; border-left: 0; border-bottom: 0; } .shadow { position: relative; width: 330px; height: 10px; background: #bdc5d5; border-radius: 10px; margin: 0 auto; } @keyframes bread { 0%, 30% { transform: none; } 33%, 62% { transform: translateY(86px); } 64% { transform: translateY(86px) scaleY(1.06); } 66%, 80% { transform-origin: bottom; transform: translateY(86px) scaleY(0.9); } 83% { transform: translateY(-160px) scaleY(1.3); } 86%, 88% { transform-origin: top; transform: translateY(-160px) scaleY(0.9); } 93% { transform: none; } } .bread { --c-bread-base: var(--c-brown-light); --c-bread-outline: var(--c-brown-normal); --c-bread-side: var(--c-brown-dark); position: relative; width: 204px; height: 164px; margin: 0 64px 0 auto; margin-bottom: -54px; animation: bread var(--animation); } .bread-base { background: var(--c-bread-base); border-radius: 12px; border: 8px solid var(--c-bread-outline); box-shadow: -16px 0 0 0 var(--c-bread-side); height: 100%; position: absolute; right: 16px; width: 156px; } .bread-top { background: var(--c-bread-base); border-radius: 20px; border-radius: 20px; border: 8px solid var(--c-bread-outline); box-shadow: -16px 0 0 0 var(--c-bread-side); height: 32px; margin-bottom: -8px; margin-left: 4px; position: absolute; right: 0; width: 188px; } .bread-top::before, .bread-top::after { content: ""; position: absolute; } .bread-top::before { bottom: -10px; right: 16px; width: 140px; height: 12px; background: #c28b60; } .bread-face { width: 120px; height: 64px; position: absolute; top: 32px; right: 34px; display: flex; align-items: center; justify-content: center; } .bread-eyes { position: absolute; top: 10px; display: flex; justify-content: space-around; } .bread-eye { position: relative; width: 48px; height: 48px; margin: 0 8px; } @keyframes breadEyeOpen { 0%, 18% { transform: none; opacity: 1; animation-timing-function: step-end; } 20%, 22% { opacity: 0; transform: scaleY(0.8); animation-timing-function: step-end; } 23%, 24% { opacity: 1; transform: none; } } .bread-eye-open { width: 48px; height: 48px; border-radius: 50%; background: #fff; position: relative; overflow: hidden; display: flex; align-items: center; justify-content: center; animation: breadEyeOpen var(--animation); } @keyframes breadEyeOpenIris { 0%, 7% { transform: none; } 8%, 14% { transform: translateY(8px); } 15%, 100% { transform: none; } } .bread-eye-open-iris { --c-bread-eye-open-iris: var(--c-dark); --w-bread-eye-open-iris: 24px; --h-bread-eye-open-iris: var(--w-bread-eye-open-iris); width: var(--w-bread-eye-open-iris); height: var(--h-bread-eye-open-iris); background: var(--c-bread-eye-open-iris); border-radius: 50%; animation: breadEyeOpenIris var(--animation); } .bread-eye-closed { position: absolute; top: 50%; width: 48px; height: 6px; margin-top: -3px; background: #000; } .bread-mouth { position: absolute; bottom: 22px; width: 10px; height: 6px; border-radius: 50%; border-bottom: 2px solid #141414; } @keyframes breadBrow { 0%, 29% { transform: none; } 32%, 36% { transform: translateY(-6px); } 37%, 80% { transform: none; } 87%, 88% { transform: translateY(-12px); } 89% { transform: none; } } .bread-brows { display: flex; justify-content: space-between; position: absolute; top: 0; width: 76px; animation: breadBrow var(--animation); } .bread-brow { background: #74482c; border-radius: 50%; height: 6px; width: 10px; } .bread-flecks { bottom: 0; display: flex; justify-content: space-between; position: absolute; width: 100%; } .bread-fleck { background: #74482c; border-radius: 50%; height: 3px; position: relative; width: 3px; } .bread-fleck::before, .bread-fleck::after { content: ""; position: absolute; width: 100%; height: 100%; border-radius: 50%; background: #74482c; } .bread-fleck::before { top: -6px; left: 2px; } .bread-fleck::after { top: -2px; left: 6px; } .bread-fleck:last-of-type { transform: scaleX(-1); } Навигация по записям Typographic Clock One-page two navs