// -------------------------------------------------------------- // == mixins */ // -------------------------------------------------------------- @mixin flow($font-size, $bf: $base-font, $lh: $line-height) { $lh-value: $base-font * $lh; $coeff: ceil($font-size / $lh-value); $new-lh: ($lh-value / $font-size) * $coeff; $margin-bottom: $new-lh / $coeff; margin-bottom: $margin-bottom + em; font-size: $font-size / 10 + rem; line-height: $new-lh; } /* Glitch -------------------------------------------------------------- */ @mixin textGlitch($name, $intensity, $background, $highlightColor1, $highlightColor2, $width, $height) { 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)) - 60} { 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; } }