feat: Kinetic Text Tags letters ({bt} {fi} {sc} {rotat} {glitch}) use the library's own formulas; Flatten; screen 3D
Each letter is moved by one animation loop with the formulas of BounceText, FadeInText, ScareText and GlitchText (fi follows the text speed, bt keeps its phase while a line is typed out, glitch cuts the text into strips that jump sideways). Flatten and `at Flatten` isolate their children as one picture, screens get the 3D turns, matrixtransform and blend of their widgets, and RotateMatrix/OffsetMatrix/ScaleMatrix exist in Python. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
5ff43038ae
commit
ea351e44b3
5 files changed
+189
-23
No files matched your search
@@ -372,19 +372,7 @@
|
||||
|
||||
/* Kinetic Text Tags: {bt}, {sc}, {fi}, {rotat} move each letter on its own */
|
||||
.pg-fx { display: inline-block; white-space: pre; }
|
||||
.pg-fx-bt { animation: pg-fx-bounce 0.9s ease-in-out infinite; }
|
||||
.pg-fx-sc { animation: pg-fx-scare 0.12s linear infinite; }
|
||||
.pg-fx-fi { animation: pg-fx-in 0.6s ease-out both; }
|
||||
.pg-fx-rotat { animation: pg-fx-spin 2s linear infinite; }
|
||||
.pg-fx-glitch { animation: pg-fx-glitch 0.35s steps(2, end) infinite; text-shadow: 1px 0 #f0f, -1px 0 #0ff; }
|
||||
.pg-fx-wave { animation: pg-fx-wave 1.2s ease-in-out infinite; }
|
||||
@keyframes pg-fx-glitch { 20% { transform: translate(-1px, 1px); } 40% { transform: translate(1px, -1px); } 60% { transform: translate(-2px, 0); } 80% { transform: translate(2px, 1px); } }
|
||||
@keyframes pg-fx-wave { 50% { transform: translateY(-4px); } }
|
||||
/* SnowBlossom: pictures that fall and drift while the scene is shown */
|
||||
.pg-snow { position: absolute; inset: 0; overflow: hidden; pointer-events: none; }
|
||||
.pg-snow > * { position: absolute; top: -10%; animation: pg-snow-fall linear infinite; }
|
||||
@keyframes pg-snow-fall { from { transform: translate(0, 0); } to { transform: translate(var(--drift, 40px), 120vh); } }
|
||||
@keyframes pg-fx-bounce { 50% { transform: translateY(calc(var(--fx, 6) * -1px)); } }
|
||||
@keyframes pg-fx-scare { 25% { transform: translate(1px, -1px); } 75% { transform: translate(-1px, 1px); } }
|
||||
@keyframes pg-fx-in { from { opacity: 0; transform: translateY(8px); } }
|
||||
@keyframes pg-fx-spin { to { transform: rotate(360deg); } }
|
||||
Reference in new issue
Block a user