/
webdev
/
Smiley-face-preloader
Обзор
Документация
Войти
/
webdev
/
Smiley-face-preloader
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
style.css
162 строки
3 KB
Evgeny
Add files via upload
13 июл 2023, 23:08
Не верифицирован
13 июл 2023, 23:08
ef9cf35
Код
Авторство
О чём код?
* { border: 0; box-sizing: border-box; margin: 0; padding: 0; } :root { --hue: 223; --bg: hsl(var(--hue), 90%, 90%); --fg: hsl(var(--hue), 90%, 10%); --trans-dur: 0.3s; font-size: calc(16px + (20 - 16) * (100vw - 320px) / (1280 - 320)); } body { background-color: var(--bg); color: var(--fg); font: 1em/1.5 sans-serif; height: 100vh; display: grid; place-items: center; transition: background-color var(--trans-dur), color var(--trans-dur); } .smiley { width: 8em; height: 8em; } .smiley__eye1, .smiley__eye2, .smiley__mouth1, .smiley__mouth2 { animation: eye1 3s ease-in-out infinite; } .smiley__eye1, .smiley__eye2 { transform-origin: 64px 64px; } .smiley__eye2 { animation-name: eye2; } .smiley__mouth1 { animation-name: mouth1; } .smiley__mouth2 { animation-name: mouth2; visibility: hidden; } /* Dark theme */ @media (prefers-color-scheme: dark) { :root { --bg: hsl(var(--hue), 90%, 10%); --fg: hsl(var(--hue), 90%, 90%); } } /* Animations */ @keyframes eye1 { from { transform: rotate(-260deg) translate(0, -56px); } 50%, 60% { animation-timing-function: cubic-bezier(0.17, 0, 0.58, 1); transform: rotate(-40deg) translate(0, -56px) scale(1); } to { transform: rotate(225deg) translate(0, -56px) scale(0.35); } } @keyframes eye2 { from { transform: rotate(-260deg) translate(0, -56px); } 50% { transform: rotate(40deg) translate(0, -56px) rotate(-40deg) scale(1); } 52.5% { transform: rotate(40deg) translate(0, -56px) rotate(-40deg) scale(1, 0); } 55%, 70% { animation-timing-function: cubic-bezier(0, 0, 0.28, 1); transform: rotate(40deg) translate(0, -56px) rotate(-40deg) scale(1); } to { transform: rotate(150deg) translate(0, -56px) scale(0.4); } } @keyframes eyeBlink { from, 25%, 75%, to { transform: scaleY(1); } 50% { transform: scaleY(0); } } @keyframes mouth1 { from { animation-timing-function: ease-in; stroke-dasharray: 0 351.86; stroke-dashoffset: 0; } 25% { animation-timing-function: ease-out; stroke-dasharray: 175.93 351.86; stroke-dashoffset: 0; } 50% { animation-timing-function: steps(1, start); stroke-dasharray: 175.93 351.86; stroke-dashoffset: -175.93; visibility: visible; } 75%, to { visibility: hidden; } } @keyframes mouth2 { from { animation-timing-function: steps(1, end); visibility: hidden; } 50% { animation-timing-function: ease-in-out; visibility: visible; stroke-dashoffset: 0; } to { stroke-dashoffset: -351.86; } }