<div class="container">
    <div class="error404page">
        <div class="newcharacter404">
            <div class="chair404"></div>
            <div class="leftshoe404"></div>
            <div class="rightshoe404"></div>
            <div class="legs404"></div>
            <div class="torso404">
                <div class="body404"></div>
                <div class="leftarm404"></div>
                <div class="rightarm404"></div>
                <div class="head404">
                    <div class="eyes404"></div>
                </div>
            </div>
            <div class="laptop404"></div>
        </div>
    </div>
</div>
.container {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    height: 100vh;
}

body {
    background-color: white;
    overflow: hidden;
}

.error404page {
    width: 400px;
    height: 800px;
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
}

.body404,
.head404,
.eyes404,
.leftarm404,
.rightarm404,
.chair404,
.leftshoe404,
.rightshoe404,
.legs404,
.laptop404 {
    background: url(https://s3-us-west-2.amazonaws.com/s.cdpn.io/15979/404-character-new.png)
        0 0 no-repeat;
    width: 200px;
    height: 200px;
}

.newcharacter404,
.torso404,
.body404,
.head404,
.eyes404,
.leftarm404,
.rightarm404,
.chair404,
.leftshoe404,
.rightshoe404,
.legs404,
.laptop404 {
    background-size: 750px;
    position: absolute;
    display: block;
}

.newcharacter404 {
    width: 400px;
    height: 800px;
    left: 50%;
    top: 20px;
    margin-left: -200px;
}

$swayspeed: 20s;

.torso404 {
    position: absolute;
    display: block;
    top: 138px;
    left: 0px;
    width: 389px;
    height: 252px;
    animation: sway $swayspeed ease infinite;
    transform-origin: 50% 100%;
}

.body404 {
    position: absolute;
    display: block;
    top: 0px;
    left: 0px;
    width: 389px;
    height: 253px;
}

.head404 {
    position: absolute;
    top: -148px;
    left: 106px;
    width: 160px;
    height: 194px;
    background-position: 0px -265px;
    transform-origin: 50% 85%;
    animation: headTilt $swayspeed ease infinite;
}

.eyes404 {
    position: absolute;
    top: 92px;
    left: 34px;
    width: 73px;
    height: 18px;
    background-position: -162px -350px;
    animation: blink404 10s steps(1) infinite, pan 10s ease-in-out infinite;
}

.leftarm404 {
    position: absolute;
    top: 159px;
    left: 0;
    width: 165px;
    height: 73px;
    background-position: -265px -341px;
    transform-origin: 9% 35%;
    transform: rotateZ(0deg);
    animation: typeLeft 0.4s linear infinite;
}

.rightarm404 {
    position: absolute;
    top: 148px;
    left: 231px;
    width: 157px;
    height: 91px;
    background-position: -442px -323px;
    transform-origin: 90% 25%;
    animation: typeLeft 0.4s linear infinite;
}

.chair404 {
    position: absolute;
    top: 430px;
    left: 55px;
    width: 260px;
    height: 365px;
    background-position: -12px -697px;
}

.legs404 {
    position: absolute;
    top: 378px;
    left: 4px;
    width: 370px;
    height: 247px;
    background-position: -381px -443px;
}

.leftshoe404 {
    position: absolute;
    top: 591px;
    left: 54px;
    width: 130px;
    height: 92px;
    background-position: -315px -749px;
}

.rightshoe404 {
    position: absolute;
    top: 594px;
    left: 187px;
    width: 135px;
    height: 81px;
    background-position: -453px -749px;
    transform-origin: 35% 12%;
    animation: tapRight 1s linear infinite;
}

.laptop404 {
    position: absolute;
    top: 186px;
    left: 9px;
    width: 365px;
    height: 216px;
    background-position: -2px -466px;
    transform-origin: 50% 100%;
    animation: tapWobble 0.4s linear infinite;
}

@keyframes sway {
    0% {
        transform: rotateZ(0deg);
    }
    20% {
        transform: rotateZ(0deg);
    }
    25% {
        transform: rotateZ(4deg);
    }
    45% {
        transform: rotateZ(4deg);
    }
    50% {
        transform: rotateZ(0deg);
    }
    70% {
        transform: rotateZ(0deg);
    }
    75% {
        transform: rotateZ(-4deg);
    }
    90% {
        transform: rotateZ(-4deg);
    }
    100% {
        transform: rotateZ(0deg);
    }
}

@keyframes headTilt {
    0% {
        transform: rotateZ(0deg);
    }
    20% {
        transform: rotateZ(0deg);
    }
    25% {
        transform: rotateZ(-4deg);
    }
    35% {
        transform: rotateZ(-4deg);
    }
    38% {
        transform: rotateZ(2deg);
    }
    42% {
        transform: rotateZ(2deg);
    }
    45% {
        transform: rotateZ(-4deg);
    }
    50% {
        transform: rotateZ(0deg);
    }
    70% {
        transform: rotateZ(0deg);
    }
    82% {
        transform: rotateZ(0deg);
    }
    85% {
        transform: rotateZ(4deg);
    }
    90% {
        transform: rotateZ(4deg);
    }
    100% {
        transform: rotateZ(0deg);
    }
}

@keyframes typeLeft {
    0% {
        transform: rotateZ(0deg);
    }
    25% {
        transform: rotateZ(7deg);
    }
    75% {
        transform: rotateZ(-6deg);
    }
    100% {
        transform: rotateZ(0deg);
    }
}

@keyframes typeRight {
    0% {
        transform: rotateZ(0deg);
    }
    25% {
        transform: rotateZ(-6deg);
    }
    75% {
        transform: rotateZ(7deg);
    }
    100% {
        transform: rotateZ(0deg);
    }
}

@keyframes tapWobble {
    0% {
        transform: rotateZ(-0.2deg);
    }
    50% {
        transform: rotateZ(0.2deg);
    }
    100% {
        transform: rotateZ(-0.2deg);
    }
}

@keyframes tapRight {
    0% {
        transform: rotateZ(0deg);
    }
    90% {
        transform: rotateZ(-6deg);
    }
    100% {
        transform: rotateZ(0deg);
    }
}

@keyframes blink404 {
    0% {
        background-position: -162px -350px;
    }
    94% {
        background-position: -162px -350px;
    }
    98% {
        background-position: -162px -368px;
    }
    100% {
        background-position: -162px -350px;
    }
}

@keyframes pan {
    0% {
        transform: translateX(-2px);
    }
    49% {
        transform: translateX(-2px);
    }
    50% {
        transform: translateX(2px);
    }
    99% {
        transform: translateX(2px);
    }
    100% {
        transform: translateX(-2px);
    }
}

External CSS

  1. https://codepen.io/WithAnEs/pen/7534eb3fb62294822de9eace9a699d85

External JavaScript

  1. //cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js
  2. https://s3-us-west-2.amazonaws.com/s.cdpn.io/15979/footer-inject.js