Last active
June 15, 2022 12:42
-
-
Save idmontie/b54716b99ff5f5345234 to your computer and use it in GitHub Desktop.
Glitch Text Effect with CSS
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!doctype html> | |
<html> | |
<head> | |
<!-- Based on http://codepen.io/lbebber/pen/ypgql --> | |
<link href="http://necolas.github.io/normalize.css/3.0.2/normalize.css" rel='stylesheet'/> | |
<script src="https://cdnjs.cloudflare.com/ajax/libs/prefixfree/1.0.7/prefixfree.min.js"></script> | |
<style> | |
/* Just colors and font sizes */ | |
* { | |
font-family: sans-serif; | |
} | |
body { | |
background-color: black; | |
} | |
.glitch { | |
color: white; | |
font-size: 100px; | |
margin: 0 auto; | |
width: 400px; | |
} | |
/* Real glitch effect */ | |
.glitch { | |
position: relative; | |
} | |
.glitch:after { | |
animation: glitch-animation 2s infinite linear alternate-reverse; | |
background: black; | |
clip: rect( 0, 900px, 0, 0 ); | |
color: white; | |
content: attr( data-text ); | |
left: 2px; | |
overflow: hidden; | |
position: absolute; | |
text-shadow: -1px 0 red; | |
top: 0; | |
} | |
.glitch:before { | |
animation: glitch-animation-2 3s infinite linear alternate-reverse; | |
background: black; | |
clip: rect( 0, 900px, 0, 0 ); | |
color: white; | |
content: attr( data-text ); | |
left: -2px; | |
overflow: hidden; | |
position: absolute; | |
text-shadow: 1px 0 blue; | |
top: 0; | |
} | |
/* Expanded Animations */ | |
@keyframes glitch-animation { | |
0% { | |
clip: rect(42px, 9999px, 44px, 0); | |
} | |
5% { | |
clip: rect(12px, 9999px, 59px, 0); | |
} | |
10% { | |
clip: rect(48px, 9999px, 29px, 0); | |
} | |
15.0% { | |
clip: rect(42px, 9999px, 73px, 0); | |
} | |
20% { | |
clip: rect(63px, 9999px, 27px, 0); | |
} | |
25% { | |
clip: rect(34px, 9999px, 55px, 0); | |
} | |
30.0% { | |
clip: rect(86px, 9999px, 73px, 0); | |
} | |
35% { | |
clip: rect(20px, 9999px, 20px, 0); | |
} | |
40% { | |
clip: rect(26px, 9999px, 60px, 0); | |
} | |
45% { | |
clip: rect(25px, 9999px, 66px, 0); | |
} | |
50% { | |
clip: rect(57px, 9999px, 98px, 0); | |
} | |
55.0% { | |
clip: rect(5px, 9999px, 46px, 0); | |
} | |
60.0% { | |
clip: rect(82px, 9999px, 31px, 0); | |
} | |
65% { | |
clip: rect(54px, 9999px, 27px, 0); | |
} | |
70% { | |
clip: rect(28px, 9999px, 99px, 0); | |
} | |
75% { | |
clip: rect(45px, 9999px, 69px, 0); | |
} | |
80% { | |
clip: rect(23px, 9999px, 85px, 0); | |
} | |
85.0% { | |
clip: rect(54px, 9999px, 84px, 0); | |
} | |
90% { | |
clip: rect(45px, 9999px, 47px, 0); | |
} | |
95% { | |
clip: rect(37px, 9999px, 20px, 0); | |
} | |
100% { | |
clip: rect(4px, 9999px, 91px, 0); | |
} | |
} | |
@keyframes glitch-animation-2 { | |
0% { | |
clip: rect(65px, 9999px, 100px, 0); | |
} | |
5% { | |
clip: rect(52px, 9999px, 74px, 0); | |
} | |
10% { | |
clip: rect(79px, 9999px, 85px, 0); | |
} | |
15.0% { | |
clip: rect(75px, 9999px, 5px, 0); | |
} | |
20% { | |
clip: rect(67px, 9999px, 61px, 0); | |
} | |
25% { | |
clip: rect(14px, 9999px, 79px, 0); | |
} | |
30.0% { | |
clip: rect(1px, 9999px, 66px, 0); | |
} | |
35% { | |
clip: rect(86px, 9999px, 30px, 0); | |
} | |
40% { | |
clip: rect(23px, 9999px, 98px, 0); | |
} | |
45% { | |
clip: rect(85px, 9999px, 72px, 0); | |
} | |
50% { | |
clip: rect(71px, 9999px, 75px, 0); | |
} | |
55.0% { | |
clip: rect(2px, 9999px, 48px, 0); | |
} | |
60.0% { | |
clip: rect(30px, 9999px, 16px, 0); | |
} | |
65% { | |
clip: rect(59px, 9999px, 50px, 0); | |
} | |
70% { | |
clip: rect(41px, 9999px, 62px, 0); | |
} | |
75% { | |
clip: rect(2px, 9999px, 82px, 0); | |
} | |
80% { | |
clip: rect(47px, 9999px, 73px, 0); | |
} | |
85.0% { | |
clip: rect(3px, 9999px, 27px, 0); | |
} | |
90% { | |
clip: rect(26px, 9999px, 55px, 0); | |
} | |
95% { | |
clip: rect(42px, 9999px, 97px, 0); | |
} | |
100% { | |
clip: rect(38px, 9999px, 49px, 0); | |
} | |
} | |
</style> | |
</head> | |
<body> | |
<div class="glitch" data-text="GLITCH">GLITCH</div> | |
</body> | |
</html> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Great effect, thanks!