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 hidden or 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!