<!-- CODE = #A029 --> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>NETBYZZ A029</title> <link rel="stylesheet" href="style.css"> </head> <body> <div class="frame"> <div class="text"> <span>❤</span> <span></span> <span>Z</span> <span>Z</span> <span>Y</span> <span>B</span> <span>T</span> <span>E</span> <span>N</span> <span></span> <span>Y</span> <span>B</span> <span></span> <span>T</span> <span>A</span> <span>E</span> <span>R</span> <span>C</span> <span></span> <span>❤</span> <span></span> <span>Z</span> <span>Z</span> <span>Y</span> <span>B</span> <span>T</span> <span>E</span> <span>N</span> <span></span> <span>Y</span> <span>B</span> <span></span> <span>T</span> <span>A</span> <span>E</span> <span>R</span> <span>C</span> <span></span> <span>❤</span> <span></span> <span>Z</span> <span>Z</span> <span>Y</span> <span>B</span> <span>T</span> <span>E</span> <span>N</span> <span></span> <span>Y</span> <span>B</span> <span></span> <span>E</span> <span>T</span> <span>A</span> <span>E</span> <span>R</span> <span>C</span> </div> </div> </body> </html>
:root { --duration: 10s; --size: 80vw; --characters: 14; --font-size: 22px; --delay-character: 0.2s; --text-color-hover: #ff8489; } body { height: 100vh; display: flex; align-items: center; background: url(https://img.freepik.com/vector-gratis/fondo-abstracto-blanco_23-2148806276.jpg?size=626&ext=jpg) no-repeat center; background-size: cover; } .frame { width: var(--size); height: var(--size); max-width: 400px; max-height: 400px; margin: 0 auto; border: 2px #fbfbfb solid; position: relative; box-shadow: inset 0 0 0 20px white; background: url(https://images.unsplash.com/photo-1488161628813-04466f872be2?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=764&q=80) no-repeat center; background-size: cover; transition: ease all 0.3s; } .frame:hover { box-shadow: inset 0 0 0 0 white; border: 2px #f9f9f9 solid; cursor: pointer; } .frame:hover .text { mix-blend-mode: difference; } .frame:hover .text span { color: var(--text-color-hover); } .frame .text { transform: translate(calc(calc(var(--font-size) * -1) / 2), calc(calc(var(--font-size) * -1) / 2)); position: relative; height: 100%; transition: ease all 0.3s; } .frame span { font-size: var(--font-size); display: inline-block; text-align: center; width: var(--font-size); -webkit-animation: frameMove var(--duration) linear infinite; animation: frameMove var(--duration) linear infinite; position: absolute; transition: ease all 0.3s; } .frame span:nth-of-type(1) { -webkit-animation-delay: calc(var(--delay-character) * 1); animation-delay: calc(var(--delay-character) * 1); } .frame span:nth-of-type(2) { -webkit-animation-delay: calc(var(--delay-character) * 2); animation-delay: calc(var(--delay-character) * 2); } .frame span:nth-of-type(3) { -webkit-animation-delay: calc(var(--delay-character) * 3); animation-delay: calc(var(--delay-character) * 3); } .frame span:nth-of-type(4) { -webkit-animation-delay: calc(var(--delay-character) * 4); animation-delay: calc(var(--delay-character) * 4); } .frame span:nth-of-type(5) { -webkit-animation-delay: calc(var(--delay-character) * 5); animation-delay: calc(var(--delay-character) * 5); } .frame span:nth-of-type(6) { -webkit-animation-delay: calc(var(--delay-character) * 6); animation-delay: calc(var(--delay-character) * 6); } .frame span:nth-of-type(7) { -webkit-animation-delay: calc(var(--delay-character) * 7); animation-delay: calc(var(--delay-character) * 7); } .frame span:nth-of-type(8) { -webkit-animation-delay: calc(var(--delay-character) * 8); animation-delay: calc(var(--delay-character) * 8); } .frame span:nth-of-type(9) { -webkit-animation-delay: calc(var(--delay-character) * 9); animation-delay: calc(var(--delay-character) * 9); } .frame span:nth-of-type(10) { -webkit-animation-delay: calc(var(--delay-character) * 10); animation-delay: calc(var(--delay-character) * 10); } .frame span:nth-of-type(11) { -webkit-animation-delay: calc(var(--delay-character) * 11); animation-delay: calc(var(--delay-character) * 11); } .frame span:nth-of-type(12) { -webkit-animation-delay: calc(var(--delay-character) * 12); animation-delay: calc(var(--delay-character) * 12); } .frame span:nth-of-type(13) { -webkit-animation-delay: calc(var(--delay-character) * 13); animation-delay: calc(var(--delay-character) * 13); } .frame span:nth-of-type(14) { -webkit-animation-delay: calc(var(--delay-character) * 14); animation-delay: calc(var(--delay-character) * 14); } .frame span:nth-of-type(15) { -webkit-animation-delay: calc(var(--delay-character) * 15); animation-delay: calc(var(--delay-character) * 15); } .frame span:nth-of-type(16) { -webkit-animation-delay: calc(var(--delay-character) * 16); animation-delay: calc(var(--delay-character) * 16); } .frame span:nth-of-type(17) { -webkit-animation-delay: calc(var(--delay-character) * 17); animation-delay: calc(var(--delay-character) * 17); } .frame span:nth-of-type(18) { -webkit-animation-delay: calc(var(--delay-character) * 18); animation-delay: calc(var(--delay-character) * 18); } .frame span:nth-of-type(19) { -webkit-animation-delay: calc(var(--delay-character) * 19); animation-delay: calc(var(--delay-character) * 19); } .frame span:nth-of-type(20) { -webkit-animation-delay: calc(var(--delay-character) * 20); animation-delay: calc(var(--delay-character) * 20); } .frame span:nth-of-type(21) { -webkit-animation-delay: calc(var(--delay-character) * 21); animation-delay: calc(var(--delay-character) * 21); } .frame span:nth-of-type(22) { -webkit-animation-delay: calc(var(--delay-character) * 22); animation-delay: calc(var(--delay-character) * 22); } .frame span:nth-of-type(23) { -webkit-animation-delay: calc(var(--delay-character) * 23); animation-delay: calc(var(--delay-character) * 23); } .frame span:nth-of-type(24) { -webkit-animation-delay: calc(var(--delay-character) * 24); animation-delay: calc(var(--delay-character) * 24); } .frame span:nth-of-type(25) { -webkit-animation-delay: calc(var(--delay-character) * 25); animation-delay: calc(var(--delay-character) * 25); } .frame span:nth-of-type(26) { -webkit-animation-delay: calc(var(--delay-character) * 26); animation-delay: calc(var(--delay-character) * 26); } .frame span:nth-of-type(27) { -webkit-animation-delay: calc(var(--delay-character) * 27); animation-delay: calc(var(--delay-character) * 27); } .frame span:nth-of-type(28) { -webkit-animation-delay: calc(var(--delay-character) * 28); animation-delay: calc(var(--delay-character) * 28); } .frame span:nth-of-type(29) { -webkit-animation-delay: calc(var(--delay-character) * 29); animation-delay: calc(var(--delay-character) * 29); } .frame span:nth-of-type(30) { -webkit-animation-delay: calc(var(--delay-character) * 30); animation-delay: calc(var(--delay-character) * 30); } .frame span:nth-of-type(31) { -webkit-animation-delay: calc(var(--delay-character) * 31); animation-delay: calc(var(--delay-character) * 31); } .frame span:nth-of-type(32) { -webkit-animation-delay: calc(var(--delay-character) * 32); animation-delay: calc(var(--delay-character) * 32); } .frame span:nth-of-type(33) { -webkit-animation-delay: calc(var(--delay-character) * 33); animation-delay: calc(var(--delay-character) * 33); } .frame span:nth-of-type(34) { -webkit-animation-delay: calc(var(--delay-character) * 34); animation-delay: calc(var(--delay-character) * 34); } .frame span:nth-of-type(35) { -webkit-animation-delay: calc(var(--delay-character) * 35); animation-delay: calc(var(--delay-character) * 35); } .frame span:nth-of-type(36) { -webkit-animation-delay: calc(var(--delay-character) * 36); animation-delay: calc(var(--delay-character) * 36); } .frame span:nth-of-type(37) { -webkit-animation-delay: calc(var(--delay-character) * 37); animation-delay: calc(var(--delay-character) * 37); } .frame span:nth-of-type(38) { -webkit-animation-delay: calc(var(--delay-character) * 38); animation-delay: calc(var(--delay-character) * 38); } .frame span:nth-of-type(39) { -webkit-animation-delay: calc(var(--delay-character) * 39); animation-delay: calc(var(--delay-character) * 39); } .frame span:nth-of-type(40) { -webkit-animation-delay: calc(var(--delay-character) * 40); animation-delay: calc(var(--delay-character) * 40); } .frame span:nth-of-type(41) { -webkit-animation-delay: calc(var(--delay-character) * 41); animation-delay: calc(var(--delay-character) * 41); } .frame span:nth-of-type(42) { -webkit-animation-delay: calc(var(--delay-character) * 42); animation-delay: calc(var(--delay-character) * 42); } .frame span:nth-of-type(43) { -webkit-animation-delay: calc(var(--delay-character) * 43); animation-delay: calc(var(--delay-character) * 43); } .frame span:nth-of-type(44) { -webkit-animation-delay: calc(var(--delay-character) * 44); animation-delay: calc(var(--delay-character) * 44); } .frame span:nth-of-type(45) { -webkit-animation-delay: calc(var(--delay-character) * 45); animation-delay: calc(var(--delay-character) * 45); } .frame span:nth-of-type(46) { -webkit-animation-delay: calc(var(--delay-character) * 46); animation-delay: calc(var(--delay-character) * 46); } .frame span:nth-of-type(47) { -webkit-animation-delay: calc(var(--delay-character) * 47); animation-delay: calc(var(--delay-character) * 47); } .frame span:nth-of-type(48) { -webkit-animation-delay: calc(var(--delay-character) * 48); animation-delay: calc(var(--delay-character) * 48); } .frame span:nth-of-type(49) { -webkit-animation-delay: calc(var(--delay-character) * 49); animation-delay: calc(var(--delay-character) * 49); } .frame span:nth-of-type(50) { -webkit-animation-delay: calc(var(--delay-character) * 50); animation-delay: calc(var(--delay-character) * 50); } .frame span:nth-of-type(51) { -webkit-animation-delay: calc(var(--delay-character) * 51); animation-delay: calc(var(--delay-character) * 51); } .frame span:nth-of-type(52) { -webkit-animation-delay: calc(var(--delay-character) * 52); animation-delay: calc(var(--delay-character) * 52); } @-webkit-keyframes frameMove { 0% { top: 0; left: 0; transform: rotate(0deg); } 24% { top: 0; left: 100%; transform: rotate(0deg); } 25% { transform: rotate(90deg); } 49% { top: 100%; left: 100%; transform: rotate(90deg); } 50% { transform: rotate(180deg); } 74% { top: 100%; left: 0%; transform: rotate(180deg); } 75% { transform: rotate(270deg); } 99% { top: 0%; left: 0%; transform: rotate(270deg); } 100% { transform: rotate(360deg); } } @keyframes frameMove { 0% { top: 0; left: 0; transform: rotate(0deg); } 24% { top: 0; left: 100%; transform: rotate(0deg); } 25% { transform: rotate(90deg); } 49% { top: 100%; left: 100%; transform: rotate(90deg); } 50% { transform: rotate(180deg); } 74% { top: 100%; left: 0%; transform: rotate(180deg); } 75% { transform: rotate(270deg); } 99% { top: 0%; left: 0%; transform: rotate(270deg); } 100% { transform: rotate(360deg); } }