<div class="snowfall-con">
<div class="snowflake-one snowflake"></div>
<div class="snowflake-two snowflake"></div>
<div class="snowflake-three snowflake"></div>
<div class="snowflake-four snowflake"></div>
<div class="snowflake-five snowflake"></div>
<div class="snowflake-six snowflake"></div>
<div class="snowflake-seven snowflake"></div>
<div class="snowflake-eight snowflake"></div>
<div class="snowflake-nine snowflake"></div>
<div class="snowflake-ten snowflake"></div>
<div class="snowflake-eleven snowflake"></div>
<div class="snowflake-twelve snowflake"></div>
<div class="snowflake-thirteen snowflake"></div>
</div>
<div class="tree">
<div class="tree-leaves"></div>
<div class="tree-trunk"></div>
</div>
<div class="city-con">
<div class="house">
<div class="roof">
<div class="chimney"></div>
</div>
<div class="house-front">
<div class="house-window"></div>
<div class="house-window-two"></div>
<div class="house-window-three"></div>
<div class="door">
<div class="nob"></div>
</div>
</div>
</div>
<div class="sidewalk">
<div class="side-one"></div>
</div>
<div class="snow-layer-bottom">
<div class="snowman-one"></div>
<div class="snowman-two">
<div class="button-one"></div>
<div class="button-two"></div>
<div class="button-three"></div>
<div class="stick"></div>
<div class="stick-two"></div>
</div>
<div class="snowman-three">
<div class="snowman-eye"></div>
<div class="snowman-eye-two"></div>
<div class="carrot"></div>
<div class="snowman-smile"></div>
<div class="snowman-smile-cover"></div>
<div class="top-hat-rim"></div>
<div class="top-hat">
<div class="top-hat-red"></div>
</div>
</div>
</div>
</div>
<div class="santa-con">
<div class="santa">
<div class="hat"></div>
<div class="white-hat"></div>
<div class="hat-ball"></div>
<div class="head">
<div class="eyebrow eyebrow-one"></div>
<div class="eyebrow-two"></div>
<div class="eye">
<div class="blink"></div>
<div class="pupil-color">
<div class="pupil"></div>
</div>
</div>
<div class="eye-two">
<div class="blink"></div>
<div class="pupil-color">
<div class="pupil"></div>
</div>
</div>
<div class="nose-dark">
<div class="nose-light"></div>
</div>
<div class="beard">
<div class="beard-left"></div>
<div class="center-beard"></div>
<div class="beard-right"></div>
<div class="mouth"></div>
</div>
</div>
<div class="suit">
<div class="suit-line"></div>
<div class="belt">
<div class="buckle">
<div class="buckle-belt"></div>
</div>
</div>
<div class="white-suit"></div>
</div>
<div class="left-arm">
<div class="fluff"></div>
<div class="hand"></div>
</div>
<div class="right-arm">
<div class="fluff"></div>
<div class="hand"></div>
</div>
<div class="leg left-leg">
<div class="fluff"></div>
<div class="boot">
<div class="bottom-boot"></div>
</div>
</div>
<div class="leg right-leg">
<div class="fluff"></div>
<div class="boot">
<div class="bottom-boot"></div>
</div>
</div>
</div>
</div>
<a class="github" href="https://www.github.com/joerez" target="_blank">Follow on GitHub</a>
body {
height: 100vh;
width: 100%;
overflow-y: hidden;
background-color:black;
background-image:
radial-gradient(white, rgba(255,255,255,.2) 2px, transparent 40px),
radial-gradient(white, rgba(255,255,255,.15) 1px, transparent 30px),
radial-gradient(white, rgba(255,255,255,.1) 2px, transparent 40px),
radial-gradient(rgba(255,255,255,.4), rgba(255,255,255,.1) 2px, transparent 30px);
background-size: 550px 550px, 350px 350px, 250px 250px, 150px 150px;
background-position: 0 0, 40px 60px, 130px 270px, 70px 100px;
}
@keyframes santaMove {
25% {
transform: translateX(30px)
}
50% {
transform: translateX(0px)
}
70% {
transform: translateX(-30px)
}
}
.santa-con {
animation: santaMove 7s ease-out infinite;
position: absolute;
left: 0;
top: 220px;
height: 100vh;
width: 100%;
display: flex;
flex-direction: row;
justify-content: center;
z-index: 1000000000;
}
.santa {
animation: jump 7s ease-out infinite;
position: relative;
height: 400px;
width: 400px;
transition: all 1s;
z-index: 2;
}
@keyframes headRotate {
50% {
transform: rotate(-5deg);
}
}
.head {
animation: headRotate 6s linear infinite;
position: relative;
top: 50px;
left: 0;
right: 0;
margin-left: auto;
margin-right: auto;
height: 100px;
width: 100px;
border-radius: 50%;
background: rgba(255, 234, 167,1.0);
z-index: 105;
border: solid 2px white;
}
@keyframes eyebrowAn {
20% {
transform: rotate(3deg);
}
40% {
transform: rotate(-6deg) translateY(-2px);
}
70% {
transform: rotate(-6deg) translateY(-2px);
}
}
.eyebrow {
animation: eyebrowAn 7s linear infinite;
position: absolute;
top: 30px;
left: 20px;
height: 5px;
width: 15px;
border: solid 1px black;
border-bottom-left-radius: 3px;
border-bottom-right-radius: 10px;
border-top-left-radius: 6px;
border-top-right-radius: 4px;
background: white;
transform: rotate(0deg)
}
.eyebrow-two {
animation: eyebrowAn 7s linear infinite;
position: absolute;
top: 30px;
right: 20px;
height: 5px;
width: 15px;
border: solid 1px black;
border-bottom-left-radius: 10px;
border-bottom-right-radius: 3px;
border-top-left-radius: 4px;
border-top-right-radius: 6px;
background: white;
transform: rotate(-2deg)
}
.eye {
position: relative;
top: 40px;
left: 20px;
height: 12px;
width: 20px;
background: white;
border-radius: 50%;
border: solid 1px black;
display: flex;
justify-content: center;
align-items: center;
}
@keyframes eyes {
0% {
transform: translateX(0px);
}
50% {
transform: translateX(2px);
}
60% {
transform: translateX(2px);
}
75% {
transform: translateX(-2px);
}
90% {
transform: translateX(-2px);
}
}
.pupil-color {
animation: eyes 4s linear infinite;
margin-top: 1px;
height: 7px;
width: 7px;
background: rgba(9, 132, 227,1.0);
border: solid 1px black;
border-radius: 50%;
marin-left: 3px;
display: flex;
justify-content: center;
align-items: center;
}
.pupil {
height: 3px;
width: 3px;
background: black;
border-radius: 50%;
}
.eye-two {
position: relative;
top: 26px;
left: 60px;
height: 12px;
width: 20px;
background: white;
border-radius: 50%;
border: solid 1px black;
display: flex;
justify-content: center;
align-items: center;
}
@keyframes blink {
9 % {
height: 0%;
}
10% {
height: 100%;
}
12% {
height: 0%;
}
}
.blink {
top: 0;
left: 0;
animation: blink 4s linear infinite;
animation-delay: 0s;
position: absolute;
z-index: 100;
height: 0%;
width: 100%;
background: rgba(255, 234, 167,1.0);
border-radius: 50%;
}
.nose-dark {
position: absolute;
top: 60px;
left: 37px;
height: 20px;
width: 25px;
background: rgba(250, 177, 160,.5);
border-radius: 50%;
z-index: 60000;
}
.nose-light {
height: 85%;
width: 90%;
background: rgba(253, 223, 130,1.0);
border-radius: 50%;
z-index: 340;
}
.beard {
position: relative;
height: 90px;
width: 70px;
z-index: 30;
top: 39px;
left: 15px;
z-index: 10001;
}
.beard-left {
border-radius: 50%;
background: white;
position: absolute;
left: -20px;
height: 70px;
width: 70px;
}
.beard-right {
border-radius: 50%;
background: white;
position: absolute;
left: 20px;
height: 70px;
width: 70px;
}
.center-beard {
border-radius: 50%;
background: white;
position: absolute;
top: 20px;
left: 0px;
height: 70px;
width: 70px;
box-shadow: 0px 2px 0px 0px rgba(0,0,0,.3);
z-index: 1001;
}
@keyframes smile {
30% { transform: translateX(0px);
width: 20px}
50% {
transform: translateX(-5px);
width: 30px;
}
70% {
transform: translateX(-5px);
width: 30px;
}
}
.mouth {
animation: smile 6s linear infinite;
border-radius: 0;
border-bottom-right-radius: 50%;
border-bottom-left-radius: 50%;
background: black;
position: absolute;
top: 30px;
left: 26px;
height: 5px;
width: 20px;
z-index: 60000;
}
.hat {
position: absolute;
height: 100px;
width: 110px;
background: rgba(214, 48, 49,1.0);
border-radius: 30px;
border-top-left-radius: 50%;
border-top-right-radius:50%;
left: 160px;
top: 25px;
z-index: 104;
}
.white-hat {
position: absolute;
height: 20px;
width: 110px;
border-radius: 20px;
background: white;
top: 50px;
z-index: 30000;
left: 145px;
box-shadow: 1px 1px 4px rgba(0,0,0,.3);
}
.hat-ball {
position: absolute;
height: 35px;
width: 35px;
border-radius: 50%;
background: white;
top: 95px;
left: 240px;
z-index: 150;
box-shadow: 1px 1px 4px rgba(0,0,0,.3);
}
@keyframes breath {
50% {
transform: translateY(-2px) scale(1.05);
}
}
.suit {
animation: breath 4s linear infinite;
animation-fill-mode: initial;
position: relative;
top: 30px;
left: 100px;
height: 200px;
width: 200px;
z-index: 100;
border-top-left-radius: 50%;
border-top-right-radius: 50%;
background: rgba(214, 48, 49,1.0);
border: solid 1px black;
}
.suit-line {
position: absolute;
height: 180px;
width: 50px;
background: white;
border: solid 1px black;
top: 20px;
left: 75px;
}
.belt {
position: absolute;
background: rgba(45, 52, 54,1.0);
width: 100%;
height: 30px;
top: 150px;
display: flex;
justify-content: center;
box-shadow: 1px 1px 4px rgba(0,0,0,.3);
}
.buckle {
height: 80%;
width: 40px;
background: gold;
border: solid 3px black;
display: flex;
justify-content: center;
align-items: center;
box-shadow: 1px 1px 4px rgba(0,0,0,.3);
}
.buckle-belt {
height: 80%;
width: 80%;
background: rgba(45, 52, 54,1.0);
border-bottom-left-radius: 10px;
border-top-right-radius: 10px;
border-bottom-right-radius: 6px;
border-top-left-radius: 6px;
border: solid 2px rgba(253, 203, 110,1.0);
box-shadow: 1px 1px 4px rgba(0,0,0,.3);
}
.white-suit {
position: absolute;
top: 95%;
width: 99%;
height: 20px;
background: white;
border: solid 1px; black;
border-bottom-left-radius: 50%;
border-bottom-right-radius: 50%;
z-index: 100;
box-shadow: 1px 1px 4px rgba(0,0,0,.3);
}
@keyframes leftArm {
10% {
transform: rotate(130deg) translateY(90px) translateX(-60px);
}
20% {
transform: rotate(120deg) translateY(70px) translateX(-50px);
}
30% {
transform: rotate(130deg) translateY(90px) translateX(-60px);
}
40% {
transform: rotate(40deg);
}
}
.left-arm {
animation: leftArm 10s linear infinite;
animation-fill-mode: initial;
position: relative;
top: -149px;
left: 80px;
height: 150px;
width: 40px;
background: rgba(214, 48, 49,1.0);
border: solid 1px black;
transform: rotate(40deg);
border-top: none;
box-shadow: 1px 1px 4px rgba(0,0,0,.3);
z-index: 10;
}
.right-arm {
position: relative;
top: -299px;
left: 280px;
height: 150px;
width: 40px;
background: rgba(214, 48, 49,1.0);
border: solid 1px black;
transform: rotate(-40deg);
border-top: none;
z-index: 11;
}
.fluff {
position: absolute;
bottom: -5px;
background: white;
width: 150%;
height: 20px;
left: -10px;
border: solid 1px black;
border-radius: 7px;
z-index: 5;
}
.hand {
position: absolute;
bottom: -25px;
background: rgba(255, 234, 167,1.0);;
width: 30px;
height: 30px;
left: 7px;
border: solid 1px black;
border-radius: 50%;
}
@keyframes leftLeg {
10% {
transform: rotate(-0deg)
}
15% {
transform: rotate(-15deg) translateY(-3px) translateX(10px)
}
25% {
transform: rotate(0deg)
}
}
.left-leg {
animation: leftLeg 6s ease-out infinite;
animation-fill-mode: initial;
position: relative;
height: 90px;
width: 40px;
background: rgba(214, 48, 49,1.0);
top: -270px;
left: 130px;
}
@keyframes rightLeg {
10% {
transform: rotate(-15deg) translateY(-3px) translateX(10px);
}
20% {
transform: rotate(0deg)
}
60% {
transform: rotate(-15deg) translateY(-3px) translateX(10px);
}
70% {
transform: rotate(0deg);
}
}
.right-leg {
animation: rightLeg 6s ease-in-out infinite;
animation-fill-mode: initial;
position: relative;
height: 90px;
width: 40px;
background: rgba(214, 48, 49,1.0);
top: -360px;
left: 230px;
}
.leg .fluff {
left: -5px;
height: 10px;
width: 120%;
box-shadow: 0px 2px 1px rgba(0,0,0,.5);
z-index: 100;
}
.leg {
z-index: 10;
border: solid 1px black;
}
.boot {
position: relative;
height: 40px;
width: 40px;
background: rgba(45, 52, 54,1.0);
bottom: -90px;
left: 0px;
z-index: 0;
border: solid 1px black;
z-index: 10;
}
.bottom-boot {
position: absolute;
bottom: -10px;
width: 60px;
height: 20px;
background: black;
border-radius: 30px;
z-index: 10;
}
.puddle {
position: absolute;
bottom: -150px;
width: 500px;
height: 300px;
border-radius: 50%;
background: rgba(116, 185, 255,.6);
border: solid 1px black;
z-index: 0;
}
@keyframes jump {
0% {
transform: scaleY(.95);
}
10% {
transform: scaleX(1.00) scaleY(1.00) translateY(-40px);
}
20% {
transform: scaleX(1.0) scaleY(1.0) translateY(0px);
}
}
.jump {
animation: jump 2s linear 1;
}
.city-con {
position: absolute;
top: 0;
left: 0;
height: 100vh;
width: 100%;
z-index: 0;
}
.sidewalk {
position: relative;
top: 70%;
height: 100px;
width: 100%;
background: rgba(178, 190, 195,1.0);
z-index: 10;
}
.side-one {
position: relative;
left: 33%;
height: 100%;
width: 33%;
border-right: solid 1px black;
border-left: solid 1px black;
}
.snow-layer-bottom {
position: relative;
height: 100px;
background: #FFFAFA;
top: 70%;
}
.snowman-one {
position: relative;
width: 120px;
height: 120px;
background: #f9ecec;
border: solid 1px black;
border-radius: 50%;
left: 50px;
}
.snowman-two {
position: relative;
width: 100px;
height: 100px;
background: #f9ecec;
border: solid 1px black;
border-radius: 50%;
left: 60px;
top: -180px;
z-index: 15;
}
.snowman-three {
position: relative;
width: 80px;
height: 80px;
background: #f9ecec;
border: solid 1px black;
border-radius: 50%;
left: 70px;
top: -330px;
z-index: 15;
}
.snowman-eye {
position: absolute;
top: 30px;
left: 20px;
height: 10px;
width: 10px;
background: rgba(0,0,0,.7);
border-radius: 50%;
}
.snowman-eye-two {
position: absolute;
top: 30px;
right: 20px;
height: 10px;
width: 10px;
background: rgba(0,0,0,.7);
border-radius: 50%;
}
.carrot {
position: absolute;
top: 43px;
right: 30px;
width: 0;
height: 0;
border-left: 10px solid transparent;
border-right: 10px solid transparent;
border-top: 20px solid orange;
}
.snowman-smile {
border-bottom-right-radius: 25px;
border-bottom-left-radius: 25px;
border-radius-bottomright: 25px;
border-radius-bottomleft: 25px;
border-bottom-right-radius: 30px;
border-bottom-left-radius: 30px;
height: 10px;
background-color: #000;
position: absolute;
width: 30px;
left: 25px;
top: 65px;
}
.snowman-smile-cover {
border-bottom-right-radius: 25px;
border-bottom-left-radius: 25px;
height: 9px;
background-color: #f9ecec;
position: absolute;
width: 28px;
left: 26px;
top: 65px;
}
.top-hat-rim {
position: absolute;
left: -5px;
height: 20px;
width: 90px;
border-radius: 50%;
background: rgba(45, 52, 54,1.0);
}
.top-hat {
height: 60px;
width: 50px;
background: rgba(47, 53, 66,1.0);
border-top-left-radius: 25px;
border-top-right-radius: 25px;
position: absolute;
top: -50px;
left: 15px;
}
.button-one {
height: 7px;
width: 7px;
border-radius: 50%;
background: rgba(0,0,0,.7);
position: absolute;
top: 40px;
left: 46px;
}
.button-two {
height: 7px;
width: 7px;
border-radius: 50%;
background: rgba(0,0,0,.7);
position: absolute;
top: 55px;
left: 46px;
}
.button-three {
height: 7px;
width: 7px;
border-radius: 50%;
background: rgba(0,0,0,.7);
position: absolute;
top: 70px;
left: 46px;
}
.top-hat-red {
position: absolute;
height: 10px;
width: 100%;
background: rgba(192, 57, 43,1.0);
bottom: 0;
border-bottom-left-radius: 5px;
border-bottom-right-radius: 5px;
border-top-left-radius: 2px;
border-top-right-radius: 2px;
}
@keyframes stick {
50% {
transform: rotate(60deg) translateY(-20px) translateX(-20px)
}
}
.stick {
animation: stick 3s linear infinite;
width: 90px;
height: 3px;
background: brown;
position: absolute;
top: 20px;
left: -70px;
transform: rotate(20deg);
border-radius: 25px;
}
@keyframes stick2 {
50% {
transform: rotate(-60deg) translateY(-30px) translateX(60px)
}
}
.stick-two {
animation: stick2 3s linear infinite;
width: 90px;
height: 3px;
background: brown;
position: absolute;
top: 70px;
left: 70px;
transform: rotate(50deg);
border-radius: 25px;
}
.snowfall-con {
position: relative;
height: 100vh;
width: 100%;
top: 0;
left: 0;
z-index: 1000000000000000;
}
@keyframes snowOne {
100% {
transform: translateY(1000px);
}
}
.snowflake {
height: 5px;
width: 5px;
border-radius: 50%;
background: white;
box-shadow: 0px 1px 1px rgba(0,0,0,.3)
}
.snowflake-one {
animation: snowOne 6s linear infinite;
position: absolute;
top: -20px;
left: 50px;
z-index: 1000;
}
.snowflake-two {
animation: snowOne 3s linear infinite;
position: absolute;
top: -160px;
right: 110px;
z-index: 1000;
}
.snowflake-three {
animation: snowOne 4s linear infinite;
position: absolute;
top: -360px;
right: 400px;
z-index: 1000;
}
.snowflake-four {
animation: snowOne 7s linear infinite;
position: absolute;
top: -160px;
right: 600px;
z-index: 1000;
}
.snowflake-five {
animation: snowOne 2s linear infinite;
position: absolute;
top: -360px;
right: 329px;
z-index: 1000;
}
.snowflake-six {
animation: snowOne 3s linear infinite;
position: absolute;
top: -60px;
right: 520px;
z-index: 1000;
}
.snowflake-seven {
animation: snowOne 10s linear infinite;
position: absolute;
top: -360px;
right: 220px;
z-index: 1000;
}
.snowflake-eight {
animation: snowOne 10s linear infinite;
position: absolute;
top: -160px;
right: 20px;
z-index: 1000;
}
.snowflake-nine {
animation: snowOne 9s linear infinite;
position: absolute;
top: -360px;
left: 70px;
z-index: 1000;
}
.snowflake-ten {
animation: snowOne 4s ease-in infinite;
position: absolute;
top: -10px;
left: 220px;
z-index: 1000;
}
.snowflake-eleven {
animation: snowOne 5s linear infinite;
position: absolute;
top: -400px;
left: 320px;
z-index: 1000;
}
.snowflake-twelve {
animation: snowOne 2s linear infinite;
position: absolute;
top: -110px;
left: 420px;
z-index: 1000;
}
.snowflake-thirteen {
animation: snowOne 4.6s ease-in infinite;
position: absolute;
top: -320px;
right: 150px;
z-index: 1000;
}
.house {
position: absolute;
height: 410px;
width: 500px;
top: 250px;
left: 30px;
z-index:15;
}
.house-front {
position: relative;
top: 110px;
height: 300px;
width: 450px;
background: blue;
background-color: silver;
background-image: linear-gradient(335deg, #b00 23px, transparent 23px),
linear-gradient(155deg, #d00 23px, transparent 23px),
linear-gradient(335deg, #b00 23px, transparent 23px),
linear-gradient(155deg, #d00 23px, transparent 23px);
background-size: 58px 58px;
background-position: 0px 2px, 4px 35px, 29px 31px, 34px 6px;
}
.roof {
position: absolute;
top: 30px;
width: 0;
height: 0;
border-left: 225px solid transparent;
border-right: 225px solid transparent;
border-bottom: 80px solid #3d3d3d;
}
.chimney {
position: relative;
width: 70px;
height: 80px;
left: 30px;
bottom: 20px;
background-color: silver;
background-image: linear-gradient(335deg, #b00 23px, transparent 23px),
linear-gradient(155deg, #d00 23px, transparent 23px),
linear-gradient(335deg, #b00 23px, transparent 23px),
linear-gradient(155deg, #d00 23px, transparent 23px);
background-size: 58px 58px;
background-position: 0px 2px, 4px 35px, 29px 31px, 34px 6px;
}
.door {
position: relative;
height: 150px;
width: 100px;
background: #ff4d4d;
top: 150px;
left: 130px;
border: solid 1px black;
}
.nob {
position: absolute;
top: 90px;
right: 10px;
height: 10px;
width: 10px;
border-radius: 50%;
background: gold;
border: solid 1px black;
box-shadow: 0px 1px 2px rgba(0,0,0,.3)
}
@keyframes lightFlicker {
15% {
background: black;
}
20% {
background: gold;
box-shadow: 0px 0px 20px rgba(255,255,0,1);
}
60% {
background: gold;
box-shadow: 0px 0px 60px 10px rgba(255,255,0,1);
}
65% {
background: black;
box-shadow: none;
}
}
.house-window {
animation: lightFlicker 9.6s ease-in infinite;
animation-delay: 4.5s;
position: absolute;
height: 50px;
width: 50px;
background: black;
top: 170px;
left: 40px;
box-shadow: 1px 1px rgba(0,0,0,.3)
}
.house-window-two {
animation: lightFlicker 9.6s ease-in infinite;
position: absolute;
height: 50px;
width: 50px;
background: black;
top: 70px;
left: 40px;
}
.house-window-three {
animation: lightFlicker 35.6s ease-in infinite;
animation-delay: 2s;
position: absolute;
height: 50px;
width: 50px;
background: black;
top: 70px;
left: 160px;
}
.tree {
position: absolute;
right: 30px;
top: 300px;
height: 360px;
width: 200px;
z-index: 15;
}
.tree-trunk {
position: absolute;
bottom: 0;
left: 50px;
height: 100px;
width: 100px;
background: #8B4513;
z-index: 2;
}
.tree-leaves {
position: absolute;
top: 15px;
width: 0;
height: 0;
border-left: 100px solid transparent;
border-right: 100px solid transparent;
border-bottom: 300px solid green;
z-index: 3;
}
.github {
position: absolute;
top: 10px;
left: 10px;
background: rgba(155, 89, 182,1.0);
padding: 9px 20px 9px 20px;
color: white;
text-decoration: none;
font-family: sans-serif;
border-radius: 20px;
cursor: pointer;
z-index: 1000000000000;
font-size: 10px;
}
// Santa Claus is coming to town by Joe Rezendes
// Merry Christmas and happy holidays!
// www.joerezendes.com
// www.github.com/joerez
This Pen doesn't use any external CSS resources.
This Pen doesn't use any external JavaScript resources.