
To learn how to create the CSS Halloween Animation: Dracula/ Vampire follow the steps below and watch the video tutorial.
Demo:
Step1.
Add HTML
Create the Vampire:
<div class="halloween">
<div class="dracula">
<div class="head">
<div class="sides"></div>
<div class="teeth"></div>
<div class="eyes"></div>
<div class="eyelids"></div>
</div>
<div class="ears"></div>
<div class="collar"></div>
<div class="arms"></div>
<div class="text">Happy Halloween!</div>
</div>
</div>
Step2.
Add CSS
Import the font (source: https://fonts.google.com/):
@import url('https://fonts.googleapis.com/css2?family=Freckle+Face&display=swap');
Set the colour and the position of the background and elements:
body {
display: flex;
height: 100vh;
align-items: center;
justify-content: center;
background-color: #542f63;
overflow: hidden;
}
.halloween {
position: relative;
}
.dracula {
position: relative;
cursor: pointer;
top:-50px;
}
Style the vampire:
.head {
position: relative;
width: 100px;
height: 100px;
border-radius: 50%;
overflow: hidden;
background-color: black;
box-shadow: inset 20px -20px #c7c2e0;
z-index:3;
}
.head:before, .head:after {
content:"";
position: absolute;
background-color: #c7c2e0;
width:110px;
height:110px;
border-radius:50%;
}
.head:before {
left:-55px;
}
.head:after {
left:45px;
}
.sides {
background-color: black;
border-radius:50%;
position: absolute;
width:50px;
height:50px;
left:-20px;
top:-20px;
box-shadow: 90px 0px black;
z-index:3;
}
.sides:before {
content:"";
position: absolute;
background-color: black;
width: 35px;
height:5px;
top:90px;
left:50px;
}
.sides:after {
content:"";
position: absolute;
width:5px;
height:20px;
background-color: #f11828;
top:95px;
left:78px;
border-radius:0 0 10px 10px;
animation: drip 3s linear infinite;
}
@keyframes drip {
0% {height:20px;}
10% {height:20px;}
30% {height:30px;}
50% {height:25px;}
70% {height:20px;}
85% {height:10px;}
100% {height:20px;}
}
.teeth, .teeth:before {
position: absolute;
width:0;
height:0;
border-bottom: 10px solid transparent;
}
.teeth {
border-right: 10px solid black;
top:73px;
left:30px;
z-index:4;
}
.teeth:before {
content:"";
border-left: 10px solid black;
left:25px;
}
.eyes {
position: absolute;
border-radius:50%;
width:33px;
height: 33px;
background-color: white;
top:32px;
left:18.5px;
z-index:2;
box-shadow: 30px 0 white;
}
.eyes:before, .eyes:after {
content:"";
position: absolute;
border-radius:50%;
}
.eyes:before {
background-color: #ed439d;
width:25px;
height:25px;
top:5px;
left:7px;
box-shadow:25px 0 #ed439d;
}
.eyes:after {
background-color: #7d203a;
width:15px;
height:15px;
top:10px;
left:13px;
box-shadow: 24px 0 #7d203a;
}
.eyelids {
position: absolute;
background-color: black;
width: 25px;
height: 10px;
border-radius: 100px 100px 0 0;
top:30px;
left:27px;
transform: rotate(20deg);
z-index:4;
}
.eyelids:before {
content:"";
position: absolute;
background-color: black;
width: 25px;
height: 10px;
border-radius: 100px 100px 0 0;
transform: rotate(-40deg);
left:20px;
top:-7px;
}
.ears {
position: absolute;
background-color: #9e8dc3;
width:50px;
height: 25px;
border-radius: 0 0 100px 100px;
top:40px;
left:-30px;
transform: rotate(40deg);
z-index:2;
}
.ears:before {
content:"";
position: absolute;
background-color: #9e8dc3;
width:50px;
height: 25px;
border-radius: 0 0 100px 100px;
transform: rotate(-80deg);
left:83px;
top:-70px;
}
.collar {
position: absolute;
background-color: black;
width: 150px;
height: 75px;
border-radius: 0 0 100px 100px;
top:55px;
left:-25px;
z-index:1;
}
.collar:after {
content:"";
position: absolute;
width:0;
height:0;
border-right: 20px solid transparent;
border-left: 20px solid transparent;
border-top: 30px solid #1a0e36;
left:55px;
top:40px;
}
.collar:before {
content:"";
position: absolute;
width:80px;
height:0;
border-right: 25px solid transparent;
border-left: 25px solid transparent;
border-bottom: 180px solid black;
top:30px;
left:10px;
}
.arms {
position: absolute;
width:100px;
height:0;
border-right: 25px solid transparent;
border-left: 25px solid transparent;
border-bottom: 155px solid #1a0e36;
left:-25px;
transition: .2s;
}

Style the text:
.text {
position: absolute;
z-index:5;
text-align: center;
font-family: 'Freckle Face', cursive;
font-size: 50px;
color: #f11828;
top:120px;
left:-50px;
opacity:0;
transition: .2s;
}
Animate elements (cloak and text) on Hover:
.dracula:hover .arms {
transform: scaleX(2);
}
.dracula:hover .text {
opacity:1;
}
Watch also the video tutorial:
Enjoy coding!
Read also: