glitch.css (1686B)
1#glitch { 2 animation: glitch-skew 2s cubic-bezier(.25, .46, .45, .94) 4s infinite; 3 position: relative; 4 text-align: center; 5 transform-origin: center top; 6 height: 1em !important; 7 padding: 0px !important; 8} 9 10.glitch__color { 11 height: 100%; 12 left: 0; 13 opacity: 0.8; 14 position: absolute; 15 transform-origin: center center; 16 width: 100%; 17 z-index: -1; 18} 19 20.glitch__color--red { 21 animation: glitch 300ms cubic-bezier(.25, .46, .45, .94) infinite; 22 color: red; 23} 24 25.glitch__color--blue { 26 animation: glitch 300ms cubic-bezier(.25, .46, .45, .94) infinite reverse; 27 color: blue; 28} 29 30.glitch__color--green { 31 animation: glitch 300ms cubic-bezier(.25, .46, .45, .94) 100ms infinite; 32 color: green; 33} 34 35.glitch__line { 36 animation: glitch-line 2s linear infinite; 37 background: #000; 38 content: ''; 39 height: 1px; 40 left: 0; 41 position: absolute; 42 top: 0; 43 width: 100%; 44 z-index: 1; 45} 46 47.glitch--first { 48 animation: glitch-line 2s linear infinite; 49} 50 51.glitch--second { 52 animation: glitch-line 1s linear 1s infinite; 53} 54 55@keyframes glitch { 56 0% { 57 transform: translate(0); 58 } 59 20% { 60 transform: translate(-1px, 1px); 61 } 62 40% { 63 transform: translate(-1px, -1px); 64 } 65 60% { 66 transform: translate(1px, 1px); 67 } 68 80% { 69 transform: translate(1px, -1px); 70 } 71 100% { 72 transform: translate(0); 73 } 74 75} 76 77@keyframes glitch-skew { 78 0% { 79 transform: skew(0deg, 0deg); 80 } 81 48% { 82 transform: skew(0deg, 0deg); 83 filter: blur(0); 84 } 85 50% { 86 transform: skew(-20deg, 0deg); 87 filter: blur(4px); 88 } 89 52% { 90 transform: skew(20deg, 0deg); 91 } 92 54% { 93 transform: skew(0deg, 0deg); 94 filter: blur(0); 95 } 96 100% { 97 transform: skew(0deg, 0deg); 98 } 99 100} 101 102@keyframes glitch-line { 103 0% { 104 top: 0; 105 } 106 107 100% { 108 top: 100%; 109 } 110}