HTML Page

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link rel="stylesheet" href="cup.css">
</head>

<body>
    <div id="container">
        <div class="steam" id="steam1"></div>
        <div class="steam" id="steam2"></div>
        <div class="steam" id="steam3"></div>
        <div class="steam" id="steam4"></div>
        <div id="cup">
            <div id="cup-body">
                <div id="cup-shade"></div>
            </div>
            <div id="cup-handle"></div>
        </div>
        <div id="saucer"></div>
        <div id="shadow"></div>
    </div>
</body>

</html>

CSS Page

body{
    background-color: #45839f;
}
#container{
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
}
.steam{
    position: absolute;
    height: 150px;
    width: 150px;
    border-radius: 50%;
    background-color: rgb(255,255,255);
    margin-top: -75px;
    margin-left: 75px;
    z-index:0;
    opacity: 0;
}
#steam1{
    -webkit-animation: steam1 4s ease-out 1s infinite;
    animation: steam1 4s ease-out 1s infinite;
}
@-webkit-keyframes steam1{
    0%{
        transform: translateY(0) translateX(0) scale(0.25);
        opacity: 0.2;
    }
    100%{
        transform: translateY(-200px) translateX(-20px) scale(1);
        opacity: 0;
    }
}
@keyframes steam1{
    0%{
        transform: translateY(0) translateX(0) scale(0.25);
        opacity: 0.2;
    }
    100%{
        transform: translateY(-200px) translateX(-20px) scale(1);
        opacity: 0;
    }
}
#steam2{
    -webkit-animation: steam2 4s ease-out 0.5s infinite;
    animation: steam2 4s ease-out 0.5s infinite;
}
#steam4{
    -webkit-animation: steam2 4s ease-out 1.5s infinite;
    animation: steam2 4s ease-out 1.5s infinite;
}
@-webkit-keyframes steam2{
    0%{
        transform: translateY(0) translateX(0) scale(0.25);
        opacity: 0.2;
    }
    100%{
        transform: translateY(-200px) translateX(20px) scale(1);
        opacity: 0.2; 
    }
}
@keyframes steam2{
    0%{
        transform: translateY(0) translateX(0) scale(0.25);
        opacity: 0.2;
    }
    100%{
        transform: translateY(-200px) translateX(20px) scale(1);
        opacity: 0.2; 
    }
} 
#cup{
    z-index: 1;
}
#cup-body{
    position: absolute;
    height: 200px;
    width: 300px;
    border-radius: 0 0 150px 150px;
    background-color: #fff;
    margin: auto;
    display: inline-block;
    overflow: hidden;
    z-index: 1;
}
#cup-shade{
    position: relative;
    height: 300px;
    width: 200px;
    background-color: #F3F3F3;
    display: inline-block;
    margin-left: 42%;
    margin-top: -3px;
    transform: rotate(50deg);
    z-index: 1;
}
#cup-handle{
    position: relative;
    height: 75px;
    width: 80px;
    border-radius: 0 150px 150px 0;
    border: 15px solid #F3F3F3;
    margin-bottom: 95px;
    margin-left: 250px;
    display: inline-block;
    z-index: 0;
}
#saucer{
    height: 10px;
    width: 300px;
    border-radius: 50%;
    margin-top: -5px;
    margin-left: 6px;
    background-color: #7bb8d4;
}
#shadow{
height: 10px;
width: 300px;
border-radius: 50%;
margin-top: -5px;
margin-left: 6px;
background-color: #7bb8d4;
}