@cube-drone/marquee-css 0.1.1 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/marquee.css +108 -4
  2. package/package.json +1 -1
package/marquee.css CHANGED
@@ -77,6 +77,35 @@
77
77
  font-size: 0.75em;
78
78
  }
79
79
 
80
+ /* ---- :::center / :::right / :::left - the <center> tag back from the
81
+ dead, with siblings. Inline content aligns via text-align; block
82
+ children that size themselves (tables) follow via margins. Physical
83
+ directions on purpose. ---- */
84
+
85
+ .mq-center {
86
+ text-align: center;
87
+ }
88
+
89
+ .mq-right {
90
+ text-align: right;
91
+ }
92
+
93
+ .mq-left {
94
+ text-align: left;
95
+ }
96
+
97
+ .mq-center .mq-table {
98
+ margin-inline: auto;
99
+ }
100
+
101
+ .mq-right .mq-table {
102
+ margin-left: auto;
103
+ }
104
+
105
+ .mq-left .mq-table {
106
+ margin-right: auto;
107
+ }
108
+
80
109
  /* ---- tables: paragraph-rows and [c] cells (SPEC.md, "Tables") ---- */
81
110
 
82
111
  .mq-table {
@@ -292,7 +321,8 @@ big {
292
321
 
293
322
  .mq-bounce,
294
323
  .mq-jitter,
295
- .mq-wave {
324
+ .mq-wave,
325
+ .mq-rubber {
296
326
  display: inline-block;
297
327
  }
298
328
 
@@ -310,7 +340,10 @@ big {
310
340
  .mq-rainbow.mq-split,
311
341
  .mq-bounce.mq-split,
312
342
  .mq-jitter.mq-split,
313
- .mq-wave.mq-split {
343
+ .mq-wave.mq-split,
344
+ .mq-rubber.mq-split,
345
+ .mq-blink.mq-split,
346
+ .mq-fadein.mq-split {
314
347
  animation: none;
315
348
  }
316
349
 
@@ -334,6 +367,43 @@ big {
334
367
  animation-delay: calc(var(--mq-o, 0) * -1.4s);
335
368
  }
336
369
 
370
+ .mq-rubber.mq-split .mq-l {
371
+ animation: mq-rubber 0.7s ease-in-out infinite alternate;
372
+ animation-delay: calc(var(--mq-o, 0) * -1.4s);
373
+ }
374
+
375
+ /* The reveals (typewriter, fadein): each unit enters at ordinal x step
376
+ (--mq-o is the sequential integer here, not the loopers' 0..1
377
+ fraction). The hiding lives ONLY in these animations - fill-mode holds
378
+ the from-frame through the delay - so wherever animations don't run
379
+ (reduced motion, print, old browsers) the text is simply visible.
380
+ Never a hostage situation. */
381
+ /* steps(1, start): the value jumps to the end-state at the START of the
382
+ active interval, so the pop lands exactly at the delay and the duration
383
+ only needs to be long enough for the compositor to sample it. (A 1ms
384
+ duration is a trap: its active window falls between frames, and
385
+ never-sampled micro-animations froze mid-word in Chromium.) */
386
+ .mq-typewriter.mq-split .mq-l {
387
+ animation: mq-tw-in 0.4s steps(1, start) both;
388
+ animation-delay: calc(var(--mq-o, 0) * var(--mq-tw-step, 0.07s));
389
+ }
390
+
391
+ .mq-fadein {
392
+ animation: mq-fade-in 1.2s ease-out both;
393
+ }
394
+
395
+ .mq-fadein.mq-split .mq-l {
396
+ animation: mq-fade-in 0.9s ease-out both;
397
+ animation-delay: calc(var(--mq-o, 0) * var(--mq-fi-step, 0.06s));
398
+ }
399
+
400
+ /* Split blink inherits the container's rate; ramp order reads as
401
+ theater-marquee chase lights, scatter as twinkle. */
402
+ .mq-blink.mq-split .mq-l {
403
+ animation: mq-blink calc(1.2s / max(var(--mq-rate, 1), 1)) step-end infinite;
404
+ animation-delay: calc(var(--mq-o, 0) * (-1.2s / max(var(--mq-rate, 1), 1)));
405
+ }
406
+
337
407
  .mq-marquee-inner {
338
408
  animation: mq-marquee calc(16s / max(var(--mq-speed, 1), 1)) linear infinite;
339
409
  }
@@ -361,6 +431,10 @@ big {
361
431
  .mq-wave {
362
432
  animation: mq-wave 1.4s ease-in-out infinite;
363
433
  }
434
+
435
+ .mq-rubber {
436
+ animation: mq-rubber 0.7s ease-in-out infinite alternate;
437
+ }
364
438
  }
365
439
 
366
440
  @keyframes mq-marquee {
@@ -405,8 +479,38 @@ big {
405
479
  }
406
480
  }
407
481
 
408
- /* .mq-typewriter ships no motion: letter-by-letter reveal needs JS (the
409
- * interactive renderer); here it is its full static text, per contract. */
482
+ @keyframes mq-rubber {
483
+ from {
484
+ transform: scale(0.82);
485
+ }
486
+ to {
487
+ transform: scale(1.18);
488
+ }
489
+ }
490
+
491
+ @keyframes mq-tw-in {
492
+ from {
493
+ opacity: 0;
494
+ }
495
+ to {
496
+ opacity: 1;
497
+ }
498
+ }
499
+
500
+ @keyframes mq-fade-in {
501
+ from {
502
+ opacity: 0;
503
+ filter: blur(0.12em);
504
+ }
505
+ to {
506
+ opacity: 1;
507
+ filter: blur(0);
508
+ }
509
+ }
510
+
511
+ /* (The typewriter's JS halves - start-on-visibility, tap-to-skip - still
512
+ * belong to the interactive renderer; this is the best-effort CSS reveal,
513
+ * same tier as every other effect.) */
410
514
 
411
515
  /* ---- layouts: picked, not authored ---- */
412
516
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cube-drone/marquee-css",
3
- "version": "0.1.1",
3
+ "version": "0.3.0",
4
4
  "description": "The Marquee reference stylesheet: the mq-* class contract every renderer targets",
5
5
  "license": "MPL-2.0",
6
6
  "repository": {