|
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<title>Glitch Effect</title>
|
|
<style>
|
|
@import url('https://fonts.googleapis.com/css?family=Fira+Mono:400');
|
|
|
|
body {
|
|
display: flex;
|
|
width: 100vw;
|
|
height: 100vh;
|
|
align-items: center;
|
|
justify-content: center;
|
|
margin: 0;
|
|
background: #131313;
|
|
color: #fff;
|
|
font-size: 96px;
|
|
font-family: 'Fira Mono', monospace;
|
|
letter-spacing: -7px;
|
|
}
|
|
|
|
div {
|
|
position: relative;
|
|
animation: glitch 1s linear infinite;
|
|
}
|
|
|
|
@keyframes glitch {
|
|
2%, 64% {
|
|
transform: translate(2px, 0) skew(0deg);
|
|
}
|
|
4%, 60% {
|
|
transform: translate(-2px, 0) skew(0deg);
|
|
}
|
|
62% {
|
|
transform: translate(0, 0) skew(5deg);
|
|
}
|
|
}
|
|
|
|
div:before,
|
|
div:after {
|
|
content: attr(title);
|
|
position: absolute;
|
|
left: 0;
|
|
}
|
|
|
|
div:before {
|
|
animation: glitchTop 1s linear infinite;
|
|
clip-path: polygon(0 0, 100% 0, 100% 33%, 0 33%);
|
|
-webkit-clip-path: polygon(0 0, 100% 0, 100% 33%, 0 33%);
|
|
}
|
|
|
|
@keyframes glitchTop {
|
|
2%, 64% {
|
|
transform: translate(2px, -2px);
|
|
}
|
|
4%, 60% {
|
|
transform: translate(-2px, 2px);
|
|
}
|
|
62% {
|
|
transform: translate(13px, -1px) skew(-13deg);
|
|
}
|
|
}
|
|
|
|
div:after {
|
|
animation: glitchBottom 1.5s linear infinite;
|
|
clip-path: polygon(0 67%, 100% 67%, 100% 100%, 0 100%);
|
|
-webkit-clip-path: polygon(0 67%, 100% 67%, 100% 100%, 0 100%);
|
|
}
|
|
|
|
@keyframes glitchBottom {
|
|
2%, 64% {
|
|
transform: translate(-2px, 0);
|
|
}
|
|
4%, 60% {
|
|
transform: translate(-2px, 0);
|
|
}
|
|
62% {
|
|
transform: translate(-22px, 5px) skew(21deg);
|
|
}
|
|
}
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<div title="404">404</div>
|
|
</body>
|
|
</html> |