<div class="animation-container">
<div class="coffee-bag-container">
<div class="coffee-bag">
<span class="mast"></span>
<span class="bag-top"></span>
<span class="bag-body"></span>
<span class="logo">
<span class="bean bean-one"></span>
<span class="bean bean-two"></span>
</span>
<span class="info info-one"></span>
<span class="info info-two"></span>
<span class="info info-three"></span>
<span class="bag-bottom"></span>
</div><!-- ./coffee-bag -->
</div><!-- ./coffee-bag-container -->
<span class="grounds-container">
<span class="grounds grounds-one"></span>
<span class="grounds grounds-two"></span>
<span class="grounds grounds-three"></span>
<span class="grounds grounds-four"></span>
</span>
<div class="filter"></div><!-- ./filter -->
<!-- TODO: create coffee grounds falling from the bag into the filter -->
<span class="roasting-top"></span>
<div class="roasting-body">
<span class="handle-container">
<span class="handle-one"></span>
<span class="handle-two"></span>
</span>
</div><!-- ./roasting-body -->
<!-- the black part between the coffee pot and the filter -->
<span class="screen"></span>
<span class="water-attachment"></span>
<span class="water-lid"></span>
<span class="water-pot">
<span class="water-pot-gloss"></span>
<span class="fill-line fill-line-first"></span>
<span class="fill-line fill-line-last"></span>
<span class="water"></span>
</span>
<span class="warmer-plate"></span>
<span class="warmer">
<span class="warmer-accent accent-one"></span>
<span class="warmer-accent accent-two"></span>
<span class="warmer-accent accent-three"></span>
</span>
<span class="warmer-base"></span>
<span class="coffee-pot-container">
<span class="coffee-pot-top"></span>
<span class="coffee-pot-glass-top"></span>
<span class="coffee-pot-glass-connector"></span>
<span class="coffee-pot-glass-base">
<span class="coffee-pot-gloss"></span>
</span>
<span class="coffee-pot-handle-container">
<span class="handle-top"></span>
<span class="handle-bottom"></span>
</span>
<span class="coffee-drip"></span>
<span class="drip-cover"></span>
<span class="coffee"></span>
</span>
<span class="coffee-warmer-plate"></span>
<span class="coffee-base-left-end"></span>
<span class="coffee-maker-base"></span>
<span class="control-panel">
<span class="gauge-one"></span>
<span class="gauge-two"></span>
</span>
<span class="coffee-base-right-end"></span>
<span class="leg leg-one"></span>
<span class="leg leg-two"></span>
</div>
.animation-container {
background: #e2d4c2;
height: 454px;
margin: 0 auto;
overflow: hidden;
position: relative;
width: 806px;
}
span {display: block;}
.coffee-bag {
height: 170px;
left: 50%;
position: absolute;
top: 50%;
width: 72px;
-webkit-transform: translate(-50%, -50%) rotate(0);
-webkit-transform-orign: top right;
-webkit-animation: coffee-bag 2.5s 1 2s forwards;
}
.mast {
background: #73271f;
height: 12px;
position: absolute;
width: 72px;
z-index: 2;
-webkit-transform: translate(806px, 0);
-webkit-animation: coffee-bag-mast 1s 1 .5s forwards;
}
.bag-top {
border-radius: 8px 8px 0 0;
background: #8e4542;
height: 38px;
position: absolute;
width: 72px;
z-index: 1;
-webkit-transform: translate(-806px, 0);
-webkit-animation: coffee-bag-top 1s 1 forwards;
}
.bag-body {
border-radius: 0 0 8px 8px;
background: #73271f;
height: 125px;
width: 72px;
z-index: 1;
-webkit-transform: translate(-806px, 38px);
-webkit-animation: coffee-bag-body 1s 1 forwards;
}
.logo {
border-radius: 50%;
background: #af8757;
height: 40px;
position: absolute;
width: 40px;
z-index: 2;
-webkit-transform: translate(15px, -75px) scale(.25);
-webkit-animation: coffee-logo 1s 1 forwards;
.bean {
border-radius: 20px;
background: #4b2603;
height: 8px;
position: absolute;
width: 20px;
-webkit-transform: rotate(45deg) scale(.25);
-webkit-animation: bean-logo 1s 1 .5s forwards;
&.bean-one {
left: 3px;
top: 16px;
}
&.bean-two {
left: 16px;
top: 14px;
}
}
}
.info {
background: #d4a575;
height: 10px;
position: absolute;
width: 54px;
z-index: 2;
&.info-one {
-webkit-transform: translate(-806px, -25px);
-webkit-animation: info-one 1s 1 .25s forwards;
}
&.info-two {
-webkit-transform: translate(-806px, -10px);
-webkit-animation: info-two 1s 1 .5s forwards;
}
&.info-three {
-webkit-transform: translate(-806px, 5px);
-webkit-animation: info-three 1s 1 .75s forwards;
}
}
.bag-bottom {
border-radius: 0 0 8px 8px;
background: #4a0b10;
bottom: 0;
height: 12px;
left: -806px;
position: absolute;
width: 72px;
z-index: 2;
-webkit-animation: coffee-bag-bottom .75s 1 forwards;
}
.grounds-container {
opacity: 0;
position: absolute;
-webkit-animation: grounds 1.25s 1 forwards 2.75s;
}
.grounds {
background: #4b0b09;
height: 2px;
width: 2px;
z-index: 1;
position: absolute;
&:before, &:after {
background: #4b0b09;
content: '';
display: block;
height: 2px;
width: 2px;
position: absolute;
}
&:before {
top: 5px;
left: 5px;
}
&:after {
bottom: 5px;
right: 5px;
}
}
.grounds-one {left: 10px; top: 10px;}
.grounds-two {left: 10px; top: 20px;}
.grounds-three {left: 10px; top: 30px;}
.grounds-four {left: 10px; top: 40px;}
.filter {
background: #d1a978;
border-radius: 0 0 10px 10px;
height: 90px;
position: relative;
width: 100px;
-webkit-transform: translate(400px, 550px);
-webkit-animation: filter 2.5s 1 2s forwards;
&:after, &:before {
border-radius: 50%;
content: '';
display: block;
left: 50%;
position: absolute;
}
&:before {
background: #d1a978;
height: 35px;
margin-left: -60px;
top: -10px;
width: 120px;
z-index: 1;
}
&:after {
background: #b18957;
height: 20px;
margin-left: -50px;
top: -2px;
width: 100px;
z-index: 2;
}
}
.roasting-top {
background: #32262c;
border-radius: 4px;
height: 16px;
position: relative;
width: 125px;
z-index: 2;
-webkit-transform: translate(387px, -150px);
-webkit-animation: roasting-top 2s 1 3s forwards;
&:before {
background: #32262c;
border-radius: 4px;
content: '';
display: block;
height: 18px;
position: absolute;
top: -12px;
width: 125px;
}
}
.roasting-body {
background: #1d1615;
border-radius: 0 0 10px 10px;
height: 90px;
position: relative;
width: 100px;
-webkit-transform: translate(400px, 550px);
-webkit-animation: roasting-body 2s 1 3s forwards;
&:before, &:after {
content: '';
display: block;
position: absolute;
}
&:before {
border-radius: 50%;
left: 50%;
background: #1d1615;
height: 35px;
margin-left: -60px;
top: -10px;
width: 120px;
z-index: 1;
}
&:after {
background: #2f2827;
border-radius: 0 0 10px 10px;
bottom: 0;
height: 20px;
width: 100px;
}
}
.handle-container {
position: absolute;
height: 48px;
right: -25px;
top: 23px;
width: 26px;
}
.handle-one {
background: #1d1615;
height: 17px;
position: absolute;
width: 26px;
z-index: 1;
}
.handle-two {
background: #2f2827;
height: 48px;
position: absolute;
right: 0;
width: 8px;
z-index: 2;
}
.screen {
background: #1d1615;
border-radius: 4px;
height: 12px;
width: 164px;
-webkit-transform: translate(-806px, -66px);
-webkit-animation: screen 1.5s 1 4.25s forwards;
}
.coffee-pot-top {
background: #1c1616;
border-radius: 6px;
height: 16px;
position: relative;
width: 92px;
z-index: 2;
-webkit-transform: translate(806px, -303px); //408 -303
-webkit-animation: coffee-pot-top 1.5s 1 5s forwards;
}
.coffee-pot-glass-top {
background: #dfe3e6;
border: 3px solid #f3f2f7;
border-radius: 6px;
height: 16px;
width: 92px;
-webkit-transform: translate(806px, -315px) skewX(25deg); //397
-webkit-animation: glass-top 1.5s 1 4.25s forwards;
}
.coffee-pot-glass-connector {
background: #1c1616;
border-radius: 6px;
height: 7px;
position: relative;
width: 96px;
z-index: 2;
-webkit-transform: translate(806px, -313px); //404 -313
-webkit-animation: pot-connector 1.5s 1 5.25s forwards;
}
.coffee-pot-glass-base {
background: #dfe3e6;
border: 3px solid #f3f2f7;
border-radius: 6px;
height: 66px;
position: relative;
width: 92px;
-webkit-transform: translate(806px, -312px); //404 -312
-webkit-animation: glass-bottom 1.5s 1 4.5s forwards;
}
.coffee-pot-gloss {
background: #eff2f1;
border-radius: 16px;
height: 50px;
left: 6px;
position: absolute;
top: 6px;
width: 16px;
z-index: 4;
}
.coffee-pot-handle-container {
height: 86px;
position: relative;
width: 52px;
-webkit-transform: translate(806px, -411px); //479 -411
-webkit-animation: coffee-pot-handle 1.5s 1 5s forwards;
}
.handle-top {
background: #1d1614;
border-radius: 10px 10px 0 10px;
height: 26px;
position: absolute;
right: 0;
top: 0;
width: 48px;
}
.handle-bottom {
background: transparent;
border: 4px solid #1d1614;
bottom: 10px;
height: 52px;
position: absolute;
right: 0;
width: 20px;
}
.water-attachment {
background: #b3b2b4;
border-radius: 4px;
height: 12px;
width: 110px;
-webkit-transform: translate(-806px, -66px);
-webkit-animation: water-attachment 1.5s 1 4.5s forwards;
}
.water-lid {
background: #130f10;
border-radius: 4px;
height: 12px;
left: 13px;
position: relative;
width: 110px;
-webkit-transform: translate(-806px, -201px);
-webkit-animation: water-lid 1.5s 1 4.5s forwards;
&:before {
background: #2f2828;
border-radius: 6px 6px 0 0;
content: '';
display: block;
height: 14px;
left: 12px;
position: absolute;
top: -14px;
width: 85px;
}
}
.water-pot {
background: #eaeceb;
border-radius: 4px;
height: 64px;
left: 13px;
position: relative;
width: 110px;
-webkit-transform: translate(806px, -201px); //233 -201
-webkit-animation: water-pot 1.5s 1 4.75s forwards;
&:before {
background: #2f2828;
border-radius: 0 0 6px 6px;
content: '';
display: block;
height: 6px;
left: 12px;
position: absolute;
top: 0;
width: 85px;
}
}
.fill-line {
background: #1d1614;
border-radius: 50%;
height: 3px;
left: 50%;
margin-left: -11px;
position: absolute;
width: 22px;
z-index: 3;
&:after {
background: #1d1614;
border-radius: 50%;
content: '';
display: block;
height: 3px;
left: 50%;
margin-left: -11px;
position: absolute;
top: 14px;
width: 22px;
}
}
.fill-line-first {
top: 12px;
}
.fill-line-last {
top: 40px;
}
.water {
background: #0093be;
border-radius: 0 0 4px 4px;
bottom: 5px;
height: 32px;
left: 50%;
margin-left: -50px;
position: absolute;
width: 100px;
z-index: 1;
-webkit-animation: water-fill 4s 1 8.25s forwards;
}
.water-pot-gloss {
background: rgba(255,255,255,.6);
border-radius: 18px;
height: 45px;
left: 11px;
position: absolute;
top: 10px;
width: 18px;
z-index: 4;
}
.warmer-plate {
background: #191112;
border-radius: 4px;
height: 10px;
width: 88px;
-webkit-transform: translate(806px, -200px); //258 -200
-webkit-animation: warmer-plate 1.5s 1 4.5s forwards;
}
.warmer {
background: #9b9187;
border-radius: 6px;
height: 130px;
position: relative;
width: 94px;
-webkit-transform: translate(806px, -200px); //255 -200
-webkit-animation: big-warmer 1.5s 1 5s forwards;
}
.warmer-accent {
background: #d5d4d5;
border-radius: 24px;
position: absolute;
width: 24px;
}
.accent-one {
height: 86px;
left: 10px;
top: 6px;
}
.accent-two {
bottom: 6px;
height: 24px;
left: 10px;
}
.accent-three {
height: 120px;
right: 10px;
top: 6px;
}
.warmer-base {
background: #191112;
border-radius: 4px;
height: 10px;
position: relative;
width: 88px;
-webkit-transform: translate(806px, -200px); //258 -200
-webkit-animation: warmer-base 1.5s 1 5s forwards;
&:before {
background: #191112;
border-radius: 4px;
bottom: -16px;
content: '';
display: block;
height: 22px;
left: 0;
position: absolute;
width: 88px;
}
}
.coffee-warmer-plate {
background: #191112;
border-radius: 4px;
height: 10px;
width: 94px;
-webkit-transform: translate(-806px, -397px); //407 -397
-webkit-animation: coffee-warmer-plate 1.5s 1 4s forwards;
}
.coffee-base-left-end, .coffee-base-right-end {
background: #1c1512;
height: 34px;
position: relative;
width: 16px;
z-index: 3;
}
.coffee-base-left-end {
border-radius: 10px 0 0 10px;
-webkit-transform: translate(806px, -397px); //218 -397
-webkit-animation: base-left 1.5s 1 5.5s forwards;
}
.coffee-base-right-end {
border-radius: 0 10px 10px 0;
-webkit-transform: translate(806px, -487px); //546 -487
-webkit-animation: base-right 1.5s 1 5.5s forwards;
}
.coffee-maker-base {
background: #97938d;
border-radius: 10px;
height: 34px;
position: relative;
width: 344px;
z-index: 2;
-webkit-transform: translate(806px, -431px); //218 -431
-webkit-animation: coffee-base 1.5s 1 5.5s forwards;
}
.control-panel {
background: #d4d4d4;
border-radius: 15px;
height: 22px;
position: relative;
width: 283px;
z-index: 3;
-webkit-transform: translate(806px, -459px); //246 -459
-webkit-animation: control-panel 1.5s 1 5.75s forwards;
span {
background: #2a2225;
border-radius: 4px;
height: 14px;
position: relative;
width: 28px;
&:after {
border-radius: 8px;
content: '';
display: block;
height: 8px;
margin-top: -4px;
position: absolute;
top: 50%;
width: 8px;
}
}
}
.gauge-one {
-webkit-transform: translate(15px, 4px);
&:after {
background: #4ac861;
left: 4px;
}
}
.gauge-two {
-webkit-transform: translate(55px, -10px);
&:after {
background: #f00;
right: 4px;
-webkit-animation: ready .75s 1 7.5s forwards;
}
}
.leg {
background: #1b1317;
border-radius: 4px;
height: 20px;
position: relative;
width: 20px;
z-index: 1;
}
.leg-one {
-webkit-transform: translate(806px, -498px); //248 -498
-webkit-animation: leg-one 1.5s 1 6s forwards;
}
.leg-two {
-webkit-transform: translate(806px, -518px); //508 -518
-webkit-animation: leg-two 1.5s 1 6s forwards;
}
.coffee-pot-container {
}
.coffee-drip {
background: #38271d;
height: 0; //93
left: 450px;
position: absolute;
top: 159px;
width: 5px;
z-index: 1;
-webkit-animation: drip 1.25s 1 8.5s forwards;
}
.drip-cover {
background: #dfe3e6;
height: 0; //93
left: 450px;
position: absolute;
top: 159px;
width: 5px;
z-index: 1;
-webkit-animation: drip 2.5s 1 10s forwards;
}
.coffee {
background: #38271d;
border-radius: 0 0 6px 6px;
bottom: 202px;
left: 404px;
height: 0; //26
position: absolute;
width: 99px;
z-index: 3;
-webkit-animation: coffee 3.5s 1 9.25s forwards;
}
@-webkit-keyframes coffee-bag-mast {
0% { -webkit-transform: translate(806px, 0); }
100% { -webkit-transform: translate(0, 0); }
}
@-webkit-keyframes coffee-bag-top {
0% { -webkit-transform: translate(-806px, 0); }
100% { -webkit-transform: translate(0, 0); }
}
@-webkit-keyframes info-one {
0% { -webkit-transform: translate(-806px, -25px); }
100% { -webkit-transform: translate(8px, -25px); }
}
@-webkit-keyframes info-two {
0% { -webkit-transform: translate(-806px, -10px); }
100% { -webkit-transform: translate(8px, -10px); }
}
@-webkit-keyframes info-three {
0% { -webkit-transform: translate(-806px, 5px); }
100% { -webkit-transform: translate(8px, 5px); }
}
@-webkit-keyframes coffee-bag-body {
0% { -webkit-transform: translate(806px, 38px); }
100% { -webkit-transform: translate(0, 38px); }
}
@-webkit-keyframes coffee-bag-bottom {
0% { left: -806px;}
100% { left: 0; }
}
@-webkit-keyframes coffee-logo {
0% { -webkit-transform: translate(15px, -75px) scale(.25);}
100% { -webkit-transform: translate(15px, -75px) scale(1); }
}
@-webkit-keyframes bean-logo {
0% { -webkit-transform: rotate(45deg) scale(.25);}
100% { -webkit-transform: rotate(45deg) scale(1); }
}
@-webkit-keyframes coffee-bag {
0% { -webkit-transform: translate(-50%, -50%) rotate(0);}
50% { -webkit-transform: translate(180%, -100%) rotate(-95deg); }
100% { -webkit-transform: translate(806px, -100%); }
}
@-webkit-keyframes coffee-bag-exit {
100% { -webkit-transform: translate(860px, -100%); }
}
@-webkit-keyframes filter {
0% { -webkit-transform: translate(400px, 550px);}
50% { -webkit-transform: translate(400px, 250px); }
100% { -webkit-transform: translate(400px, 40px); }
}
@-webkit-keyframes roasting-body {
0% { -webkit-transform: translate(400px, 550px);}
100% { -webkit-transform: translate(400px, -65px); }
}
@-webkit-keyframes roasting-top {
0% { -webkit-transform: translate(387px, -150px);}
100% { -webkit-transform: translate(387px, -48px); }
}
@-webkit-keyframes screen {
0% { -webkit-transform: translate(806px, -66px);}
100% { -webkit-transform: translate(355px, -66px); }
}
@-webkit-keyframes water-attachment {
0% { -webkit-transform: translate(806px, -190px);}
100% { -webkit-transform: translate(340px, -190px); }
}
@-webkit-keyframes water-lid {
0% { -webkit-transform: translate(-806px, -201px);}
100% { -webkit-transform: translate(234px, -201px); }
}
@-webkit-keyframes glass-top {
0% { -webkit-transform: translate(806px, -315px) skewX(25deg);}
100% { -webkit-transform: translate(397px, -315px) skewX(25deg); }
}
@-webkit-keyframes glass-bottom {
0% { -webkit-transform: translate(806px, -312px);}
100% { -webkit-transform: translate(404px, -312px); }
}
@-webkit-keyframes coffee-warmer-plate {
0% { -webkit-transform: translate(-806px, -397px);}
100% { -webkit-transform: translate(407px, -397px); }
}
@-webkit-keyframes water-pot {
0% { -webkit-transform: translate(806px, -201px);}
100% { -webkit-transform: translate(233px, -201px); }
}
@-webkit-keyframes warmer-plate {
0% { -webkit-transform: translate(806px, -200px);}
100% { -webkit-transform: translate(258px, -200px); }
}
@-webkit-keyframes big-warmer {
0% { -webkit-transform: translate(806px, -200px);}
100% { -webkit-transform: translate(255px, -200px); }
}
@-webkit-keyframes warmer-base {
0% { -webkit-transform: translate(-806px, -200px);}
100% { -webkit-transform: translate(258px, -200px); }
}
@-webkit-keyframes coffee-pot-top {
0% { -webkit-transform: translate(-806px, -503px);}
100% { -webkit-transform: translate(408px, -303px); }
}
@-webkit-keyframes coffee-pot-handle {
0% { -webkit-transform: translate(-806px, 703px);}
100% { -webkit-transform: translate(479px, -411px); }
}
@-webkit-keyframes pot-connector {
0% { -webkit-transform: translate(806px, 403px);}
100% { -webkit-transform: translate(404px, -313px); }
}
@-webkit-keyframes base-left {
0% { -webkit-transform: translate(806px, 703px);}
100% { -webkit-transform: translate(218px, -397px); }
}
@-webkit-keyframes base-right {
0% { -webkit-transform: translate(-806px, 703px);}
100% { -webkit-transform: translate(546px, -487px); }
}
@-webkit-keyframes coffee-base {
0% { -webkit-transform: translate(806px, 903px);}
100% { -webkit-transform: translate(218px, -431px); }
}
@-webkit-keyframes control-panel {
0% { -webkit-transform: translate(-806px, -459px);}
100% { -webkit-transform: translate(246px, -459px); }
}
@-webkit-keyframes leg-one {
0% { -webkit-transform: translate(-806px, -800px);}
100% { -webkit-transform: translate(248px, -498px); }
}
@-webkit-keyframes leg-two {
0% { -webkit-transform: translate(-806px, -800px);}
100% { -webkit-transform: translate(508px, -518px); }
}
@-webkit-keyframes water-fill {
0% { height: 32px;}
100% { height: 0; }
}
@-webkit-keyframes drip {
0% { height: 0;}
100% { height: 93px; }
}
@-webkit-keyframes coffee {
0% { height: 0;}
100% { height: 26px; }
}
@-webkit-keyframes ready {
0% { background: #f00;}
100% { background: #4ac861; }
}
@-webkit-keyframes grounds {
0% { opacity: 0;left: 450px; top: 110px;}
10% {opacity: 1;}
100% { left: 440px; top: 170px; opacity: 0; }
}
View Compiled
// Inspired by: https://vimeo.com/49982094
This Pen doesn't use any external CSS resources.
This Pen doesn't use any external JavaScript resources.