| Line 1: | Line 1: | ||
| /* CSS placed here will be applied to all skins */ | /* CSS placed here will be applied to all skins */ | ||
| + | |||
| + | @mixin textGlitch($name, $intensity, $textColor, $background, $highlightColor1, $highlightColor2, $width, $height) { | ||
| + | |||
| + |   color: $textColor; | ||
| + |   position: relative; | ||
| + |   $steps: $intensity; | ||
| + | |||
| + |   // Ensure the @keyframes are generated at the root level | ||
| + |   @at-root { | ||
| + |     // We need two different ones | ||
| + |     @for $i from 1 through 2 { | ||
| + |       @keyframes #{$name}-anim-#{$i} { | ||
| + |         @for $i from 0 through $steps { | ||
| + |           #{percentage($i*(1/$steps))} { | ||
| + |             clip: rect( | ||
| + |               random($height)+px, | ||
| + |               $width+px, | ||
| + |               random($height)+px, | ||
| + |               0 | ||
| + |             ); | ||
| + |           } | ||
| + |         } | ||
| + |       } | ||
| + |     } | ||
| + |   } | ||
| + |   &:before, | ||
| + |   &:after { | ||
| + |     content: attr(data-text); | ||
| + |     position: absolute; | ||
| + |     top: 0; | ||
| + |     left: 0; | ||
| + |     width: 100%; | ||
| + |     background: $background; | ||
| + |     clip: rect(0, 0, 0, 0);  | ||
| + |   } | ||
| + |   &:after { | ||
| + |     left: 2px; | ||
| + |     text-shadow: -1px 0 $highlightColor1; | ||
| + |     animation: #{$name}-anim-1 2s infinite linear alternate-reverse; | ||
| + |   } | ||
| + |   &:before { | ||
| + |     left: -2px; | ||
| + |     text-shadow: 2px 0 $highlightColor2;  | ||
| + |     animation: #{$name}-anim-2 3s infinite linear alternate-reverse; | ||
| + |   } | ||
| + | |||
| + | } | ||
/* CSS placed here will be applied to all skins */ @mixin textGlitch($name, $intensity, $textColor, $background, $highlightColor1, $highlightColor2, $width, $height) { color: $textColor; position: relative; $steps: $intensity; // Ensure the @keyframes are generated at the root level @at-root { // We need two different ones @for $i from 1 through 2 { @keyframes #{$name}-anim-#{$i} { @for $i from 0 through $steps { #{percentage($i*(1/$steps))} { clip: rect( random($height)+px, $width+px, random($height)+px, 0 ); } } } } } &:before, &:after { content: attr(data-text); position: absolute; top: 0; left: 0; width: 100%; background: $background; clip: rect(0, 0, 0, 0); } &:after { left: 2px; text-shadow: -1px 0 $highlightColor1; animation: #{$name}-anim-1 2s infinite linear alternate-reverse; } &:before { left: -2px; text-shadow: 2px 0 $highlightColor2; animation: #{$name}-anim-2 3s infinite linear alternate-reverse; } }