The "glitch" effect, recreated with animated CSS custom properties. Pure CSS. It doesn't work in Firefox for now, but will work in the next version. I have no idea why i called it like that.
A Pen by Alex Nozdriukhin on CodePen.
<p data-text="PSYCHO">PSYCHO</p> |
The "glitch" effect, recreated with animated CSS custom properties. Pure CSS. It doesn't work in Firefox for now, but will work in the next version. I have no idea why i called it like that.
A Pen by Alex Nozdriukhin on CodePen.
// Nothing here |
//@import url('https://fonts.googleapis.com/css?family=Kanit:800'); | |
@import url('https://fonts.googleapis.com/css?family=Bungee+Shade'); | |
:root { | |
--f-size: 15; | |
--f-unit: 1vmin; | |
--f: calc(var(--f-size) * var(--f-unit)); | |
--bg: #181717; | |
} | |
*, *::after, *::before { | |
box-sizing: border-box; | |
} | |
body { | |
font-family: 'Bungee Shade', cursive;//'Kanit', sans-serif; | |
font-size: var(--f); | |
background-color: var(--bg); | |
display: flex; | |
min-height: 100vh; | |
margin: 0; | |
overflow: hidden; | |
} | |
p { | |
flex: 1; | |
line-height: .75; | |
margin: auto; | |
color: #1af0dc; | |
text-align: center; | |
transform: scaleX(var(--scale, 1)); | |
animation: glitch-p 11s infinite alternate; | |
&::before, | |
&::after { | |
--top: 0; // offset from top [0 - 10] | |
--left: 0; // offset from left [0.001 - 1] | |
--v-height: 30%; // visible part | |
--n-tenth: calc(var(--f-size) * .1 * var(--top)); | |
--t-cut: calc(var(--n-tenth) / var(--f-size) * 100%); | |
--b-cut: calc(var(--t-cut) + var(--v-height)); | |
content: attr(data-text); | |
position: absolute; | |
width: 100%; | |
left: 0; | |
text-align: center; | |
transform: translateX(calc(var(--left) * 100%)); | |
// this helps to get rid of pixelization | |
filter: drop-shadow(0 0 transparent); | |
text-shadow: calc(var(--left) * -3em) 0 .02em lime, | |
calc(var(--left) * -6em) 0 .02em #ff00e1; | |
background-color: var(--bg); | |
clip-path: polygon(0% var(--t-cut), 100% var(--t-cut), 100% var(--b-cut), 0% var(--b-cut)); | |
} | |
&::before { | |
animation: glitch-b 1.7s infinite alternate-reverse; | |
} | |
&::after { | |
animation: glitch-a 3.1s infinite alternate; | |
} | |
} | |
@keyframes glitch-p { | |
17% { --scale: .87; } | |
31% { --scale: 1.1; } | |
37% { --scale: 1.3; } | |
47% { --scale: .91; } | |
87% { --scale: 1; } | |
} | |
@keyframes glitch-a { | |
10%,30%,50%,70%,90% { | |
--top: 0; | |
--left: 0; | |
} | |
0% { | |
--v-height: 15%; | |
} | |
20% { | |
--left: .005; | |
} | |
40% { | |
--left: .01; | |
--v-height: 20%; | |
--top: 3; | |
} | |
60% { | |
--left: .03; | |
--v-height: 25%; | |
--top: 6; | |
} | |
80% { | |
--left: .07; | |
--v-height: 5%; | |
--top: 8; | |
} | |
100% { | |
--left: .083; | |
--v-height: 30%; | |
--top: 1; | |
} | |
} | |
@keyframes glitch-b { | |
10%,30%,50%,70%,90% { | |
--top: 0; | |
--left: 0; | |
} | |
0% { | |
--v-height: 15%; | |
--top: 10; | |
} | |
20% { | |
--left: -.005; | |
} | |
40% { | |
--left: -.01; | |
--v-height: 17%; | |
--top: 3; | |
} | |
60% { | |
--left: -.03; | |
--v-height: 35%; | |
--top: 6; | |
} | |
80% { | |
--left: -.07; | |
--v-height: 5%; | |
--top: 8; | |
} | |
100% { | |
--left: -.083; | |
--v-height: 30%; | |
--top: 1; | |
} | |
} |
Hi, do you already could make it work in Firefox ?
Not yet. Might do when I have time though not sure when that will happen.
Hi, do you already could make it work in Firefox ?