:doodle { @size: 1024px 600px; z-index: 1; } @size: 100px; clip-path: @shape( points: 480; scale: .3; move: 0 .35; x: sin(t) + sin(6t) + tan.sin(2t); y: cos(t) + cos(5t) + tan.cos(8t); ); position: absolute; transform: rotate(90deg); background: DarkBlue; offset-path: path('M412 100Q512 0,712 100 T900 100Q700 0,600 100 T400 100'); animation: move 20s infinite linear var(--state); cursor: pointer; @keyframes move { to { offset-distance: 100%; } } :doodle { @size: auto 4em; top: 20px; left: 60px; --geci: "花潮lrc在线"; --motion: cover2; --tt: 1s; } /* 单元格两个伪元素显示lrc歌词 */ display: grid; place-items: center start; :before, :after { content: var(--geci); color: snow; /* 歌词底色 */ font: bold 2em sans-serif; text-shadow: 1px 1px 2px #000; white-space: pre; } :after { position: absolute; width: 0; color: MediumSlateBlue; /* 同步歌词颜色 */ overflow: hidden; animation: var(--motion) var(--tt) linear forwards var(--state); } @keyframes cover1 { from { width: 0; } to { width: 100%; } } @keyframes cover2 { from { width: 0; } to { width: 100%; } } :doodle { @size: 1024px 600px; --state:paused; } position: absolute; left: @r(255)%; top: -10%; :after { position: absolute; content: '@p(你,♪,离不开,♫,♯,你,♮,♩,♬,☺,✲,❄)'; color: snow; font-size: @r(6, 24)px; } animation: fall 40s @r(-6, 36)s infinite var(--state); @keyframes fall { from { transform: rotate(0deg) translate(0px); } to { transform: rotate(@r(-60,60)deg) translate(-1500px); } }