Skip to content

Instantly share code, notes, and snippets.

@ryngonzalez
Created September 14, 2014 01:02
Show Gist options
  • Save ryngonzalez/a96cbd71f616989201d9 to your computer and use it in GitHub Desktop.
Save ryngonzalez/a96cbd71f616989201d9 to your computer and use it in GitHub Desktop.
A cool glitch effect created with the use of the `clip` CSS property, `text-shadows`, and randomized CSS keyframes. From @chriscoyier at CSS-Tricks: http://css-tricks.com/glitch-effect-text-images-svg/
/*
(TEXT) PARAMS
=================
1. Namespace
2. Intensity
3. Text color
4. Background color (flat)
5. Highlight #1 color
6. Highlight #2 color
7. Width (px)
8. Height (px)
*/
@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;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment