Pure CSS animation of a robot riding his UFO for the May 2019 codepen challenge
A Pen by Tucker Massad on CodePen.
| <div class="container"> | |
| <div class="spaceship"> | |
| <div id="star1"></div> | |
| <div id="star2"></div> | |
| <div id="star3"></div> | |
| <div class="robot"> | |
| <div id="half"> | |
| <div id="brain"></div> | |
| </div> | |
| <div id="head"> | |
| <span id="lc"></span><span id="le"></span><span id="re"></span> | |
| <div id="mouth"></div> | |
| <span id="rc"></span> | |
| </div> | |
| <div id="foot"></div> | |
| <div id="leg-1"></div> | |
| <div id="leg-2"></div> | |
| </div> | |
| <div class="spaceship_top"></div> | |
| <div class="spaceship_middle"> | |
| <div class="spaceship_balls_1"></div> | |
| <div class="spaceship_balls_2"></div> | |
| <div class="spaceship_balls_3"></div> | |
| <div class="spaceship_balls_4"></div> | |
| <div class="spaceship_balls_5"></div> | |
| </div> | |
| <div class="spaceship_bottom"> | |
| <div class="abduct_hole1"></div> | |
| <div class="abduct_hole2"></div> | |
| <div class="abduct_hole3"></div> | |
| <div class="abduct_hole4"></div> | |
| <div class="abduct_hole5"></div> | |
| </div> | |
| </div> | |
| </div> |
| // No JS. Thanks for visiting! | |
| // Thanks to @Aleks for robot divs | |
| // If you enjoy make sure to ♥ this codepen! | |
| // Not tested on mobile. |
| @dimension: 100px; | |
| * { | |
| margin: 0 auto; | |
| -webkit-user-select: none; | |
| } | |
| body { | |
| height: 100vh; | |
| overflow: hidden; | |
| animation: bodycolor 16s infinite; | |
| } | |
| .centered() { | |
| margin: auto; | |
| position: absolute; | |
| bottom: 0; | |
| left: 0; | |
| top: 0; | |
| right: 0; | |
| } | |
| .container { | |
| position: absolute; | |
| width: 100%; | |
| height: 100%; | |
| overflow: hidden; | |
| } | |
| .spaceship { | |
| position: absolute; | |
| top: 30%; | |
| height: 250px; | |
| width: 300px; | |
| margin-left: -150px; | |
| animation: spaceshipleft 8s infinite; | |
| } | |
| .spaceship_top { | |
| .centered(); | |
| top: -150px; | |
| height: 150px; | |
| width: 200px; | |
| background-color: #f6a7ba; | |
| border-radius: 8rem 8rem 0 0; | |
| box-shadow: inset 6px 2px 3px 0 #c2c2c2; | |
| } | |
| .spaceship_top::before { | |
| content: ""; | |
| position: absolute; | |
| left: 150px; | |
| top: 32px; | |
| height: 8px; | |
| width: 10px; | |
| background-color: white; | |
| border-radius: 2rem; | |
| transform: rotate(42deg); | |
| } | |
| .spaceship_top::after { | |
| content: ""; | |
| position: absolute; | |
| left: 130px; | |
| top: 20px; | |
| height: 10px; | |
| width: 20px; | |
| background-color: white; | |
| border-radius: 2rem; | |
| transform: rotate(32deg); | |
| } | |
| .spaceship_middle { | |
| .centered(); | |
| width: 300px; | |
| height: 70px; | |
| overflow: hidden; | |
| border-radius: 5rem; | |
| box-shadow: inset 6px 2px 3px 0 #c2c2c2; | |
| z-index: 3; | |
| animation: colorswap_middle 16s infinite; | |
| } | |
| .spaceship_bottom { | |
| .centered(); | |
| top: 75px; | |
| width: 165px; | |
| height: 30px; | |
| background-color: #9c0327; | |
| border-radius: 0 0 2rem 2rem; | |
| z-index: -1; | |
| box-shadow: inset 5px 2px 3px 0 #c2c2c2; | |
| z-index: 2; | |
| } | |
| .abduct_hole1 { | |
| position: absolute; | |
| left: 32px; | |
| border: 2px solid white; | |
| border-radius: 50%; | |
| background: rgba(0, 0, 0, 0); | |
| width: 100px; | |
| height: 100px; | |
| transform: rotateX(75deg); | |
| animation: abduct 8s infinite, abductcolor 16s infinite; | |
| } | |
| .abduct_hole2 { | |
| position: absolute; | |
| left: 32px; | |
| top: 20px; | |
| border: 2px solid white; | |
| border-radius: 50%; | |
| background: rgba(0, 0, 0, 0); | |
| width: 100px; | |
| height: 100px; | |
| transform: rotateX(75deg); | |
| animation: abductreverse 8s 0.1s infinite, abductcolor 16s infinite; | |
| } | |
| .abduct_hole3 { | |
| position: absolute; | |
| left: 32px; | |
| top: 35px; | |
| border: 2px solid white; | |
| border-radius: 50%; | |
| background: rgba(0, 0, 0, 0); | |
| width: 100px; | |
| height: 100px; | |
| transform: rotateX(75deg); | |
| animation: abduct 8s 0.2s infinite, abductcolor 16s infinite; | |
| } | |
| .abduct_hole4 { | |
| position: absolute; | |
| left: 30px; | |
| top: 50px; | |
| border: 2px solid white; | |
| border-radius: 50%; | |
| background: rgba(0, 0, 0, 0); | |
| width: 100px; | |
| height: 100px; | |
| transform: rotateX(75deg); | |
| animation: abductreverse 8s infinite, abductcolor 16s infinite; | |
| } | |
| .abduct_hole5 { | |
| position: absolute; | |
| left: 32px; | |
| top: 70px; | |
| border: 2px solid white; | |
| border-radius: 50%; | |
| background: rgba(0, 0, 0, 0); | |
| width: 100px; | |
| height: 100px; | |
| transform: rotateX(75deg); | |
| animation: abductreverse 8s infinite, abductcolor 16s infinite; | |
| } | |
| .spaceship_balls_1 { | |
| position: absolute; | |
| top: 10px; | |
| height: 50px; | |
| width: 50px; | |
| border-radius: 50%; | |
| animation: moveleft 3s linear infinite, colorswap 16s infinite; | |
| box-shadow: inset 6px 2px 3px 0 #c2c2c2; | |
| } | |
| .spaceship_balls_1::before { | |
| content: ""; | |
| position: absolute; | |
| top: 0; | |
| left: 60px; | |
| background-color: inherit; | |
| width: 50px; | |
| height: 50px; | |
| border-radius: 50%; | |
| box-shadow: inset 6px 2px 3px 0 #c2c2c2; | |
| } | |
| .spaceship_balls_1::after { | |
| content: ""; | |
| position: absolute; | |
| top: 0; | |
| left: 120px; | |
| background-color: inherit; | |
| width: 50px; | |
| height: 50px; | |
| border-radius: 50%; | |
| box-shadow: inset 6px 2px 3px 0 #c2c2c2; | |
| } | |
| .spaceship_balls_2 { | |
| position: absolute; | |
| top: 10px; | |
| height: 50px; | |
| width: 50px; | |
| left: 360px; | |
| border-radius: 50%; | |
| animation: moveleft 3s linear 0.64s infinite, colorswap 16s infinite; | |
| box-shadow: inset 6px 2px 3px 0 #c2c2c2; | |
| } | |
| .spaceship_balls_2::before { | |
| content: ""; | |
| position: absolute; | |
| top: 0; | |
| left: 60px; | |
| background-color: inherit; | |
| width: 50px; | |
| height: 50px; | |
| border-radius: 50%; | |
| box-shadow: inset 6px 2px 3px 0 #c2c2c2; | |
| } | |
| .spaceship_balls_2::after { | |
| content: ""; | |
| position: absolute; | |
| top: 0; | |
| left: 120px; | |
| background-color: inherit; | |
| width: 50px; | |
| height: 50px; | |
| border-radius: 50%; | |
| box-shadow: inset 6px 2px 3px 0 #c2c2c2; | |
| } | |
| .spaceship_balls_3 { | |
| position: absolute; | |
| top: 10px; | |
| height: 50px; | |
| width: 50px; | |
| left: 720px; | |
| border-radius: 50%; | |
| animation: moveleft 3s linear 1.28s infinite, colorswap 16s infinite; | |
| box-shadow: inset 6px 2px 3px 0 #c2c2c2; | |
| } | |
| .spaceship_balls_3::before { | |
| content: ""; | |
| position: absolute; | |
| top: 0; | |
| left: 60px; | |
| background-color: inherit; | |
| width: 50px; | |
| height: 50px; | |
| border-radius: 50%; | |
| box-shadow: inset 6px 2px 3px 0 #c2c2c2; | |
| } | |
| .spaceship_balls_3::after { | |
| content: ""; | |
| position: absolute; | |
| top: 0; | |
| left: 120px; | |
| background-color: inherit; | |
| width: 50px; | |
| height: 50px; | |
| border-radius: 50%; | |
| box-shadow: inset 6px 2px 3px 0 #c2c2c2; | |
| } | |
| .spaceship_balls_4 { | |
| position: absolute; | |
| top: 10px; | |
| height: 50px; | |
| width: 50px; | |
| left: 1080px; | |
| border-radius: 50%; | |
| animation: moveleft 3s linear 1.92s infinite, colorswap 16s infinite; | |
| box-shadow: inset 6px 2px 3px 0 #c2c2c2; | |
| } | |
| .spaceship_balls_4::before { | |
| content: ""; | |
| position: absolute; | |
| top: 0; | |
| left: 60px; | |
| background-color: inherit; | |
| width: 50px; | |
| height: 50px; | |
| border-radius: 50%; | |
| box-shadow: inset 6px 2px 3px 0 #c2c2c2; | |
| } | |
| .spaceship_balls_4::after { | |
| content: ""; | |
| position: absolute; | |
| top: 0; | |
| left: 120px; | |
| background-color: inherit; | |
| width: 50px; | |
| height: 50px; | |
| border-radius: 50%; | |
| box-shadow: inset 6px 2px 3px 0 #c2c2c2; | |
| } | |
| .spaceship_balls_5 { | |
| position: absolute; | |
| top: 10px; | |
| height: 50px; | |
| width: 50px; | |
| left: 1440px; | |
| border-radius: 50%; | |
| animation: moveleft 3s linear 2.56s infinite, colorswap 16s infinite; | |
| box-shadow: inset 6px 2px 3px 0 #c2c2c2; | |
| } | |
| .spaceship_balls_5::before { | |
| content: ""; | |
| position: absolute; | |
| top: 0; | |
| left: 60px; | |
| background-color: inherit; | |
| width: 50px; | |
| height: 50px; | |
| border-radius: 50%; | |
| box-shadow: inset 6px 2px 3px 0 #c2c2c2; | |
| } | |
| .spaceship_balls_5::after { | |
| content: ""; | |
| position: absolute; | |
| top: 0; | |
| left: 120px; | |
| background-color: inherit; | |
| width: 50px; | |
| height: 50px; | |
| border-radius: 50%; | |
| box-shadow: inset 6px 2px 3px 0 #c2c2c2; | |
| } | |
| .robot { | |
| text-align: center; | |
| width: @dimension * 3; | |
| position: absolute; | |
| left: 50%; | |
| margin-left: @dimension * 3 / -2; | |
| margin-top: @dimension * -2; | |
| transform: scale(0.25); | |
| z-index: 1; | |
| animation: robotup 16s infinite; | |
| } | |
| #half { | |
| text-align: center; | |
| width: @dimension * 3 - 20; | |
| height: @dimension * 2; | |
| background: #f16385; | |
| border: 10px solid #a62a48; | |
| border-top-left-radius: @dimension * 3; | |
| border-top-right-radius: @dimension * 3; | |
| } | |
| #brain { | |
| margin: 0 auto; | |
| margin-top: 20px; | |
| width: @dimension + 60; | |
| height: @dimension - 40; | |
| background: #f48aa3; | |
| border: 20px solid #d6365c; | |
| border-top-left-radius: @dimension * 2; | |
| border-top-right-radius: @dimension * 2; | |
| } | |
| #head { | |
| position: inherit; | |
| top: @dimension + 40; | |
| right: -10px; | |
| width: @dimension * 3 + 20; | |
| height: @dimension; | |
| background: #162736; | |
| } | |
| #foot { | |
| position: inherit; | |
| top: @dimension * 2 + 40; | |
| left: 10px; | |
| width: (@dimension * 2) + 80px; | |
| height: @dimension / 5; | |
| background: #162736; | |
| } | |
| #le { | |
| margin-top: 20px; | |
| margin-right: 10px; | |
| display: inline-block; | |
| width: @dimension / 3; | |
| height: @dimension / 3; | |
| border: 10px solid #d6365c; | |
| border-radius: 50%; | |
| background: #f8b1c2; | |
| } | |
| #re { | |
| margin-left: 10px; | |
| display: inline-block; | |
| width: @dimension / 3; | |
| height: @dimension / 3; | |
| border: 10px solid #d6365c; | |
| border-radius: 50%; | |
| background: #f8b1c2; | |
| } | |
| #lc { | |
| margin-right: 10px; | |
| display: inline-block; | |
| width: @dimension / 8; | |
| height: @dimension / 8; | |
| border-radius: 50%; | |
| background: #ee3d67; | |
| box-shadow: 0 0 5px rgba(255, 0, 102, 1); | |
| -webkit-box-shadow: 0 0 5px rgba(255, 0, 102, 1); | |
| -moz-box-shadow: 0 0 5px rgba(255, 0, 102, 1); | |
| } | |
| #rc { | |
| display: inline-block; | |
| width: @dimension / 8; | |
| height: @dimension / 8; | |
| border-radius: 50%; | |
| background: #ee3d67; | |
| box-shadow: 0 0 5px rgba(255, 0, 102, 1); | |
| -webkit-box-shadow: 0 0 5px rgba(255, 0, 102, 1); | |
| -moz-box-shadow: 0 0 5px rgba(255, 0, 102, 1); | |
| } | |
| #mouth { | |
| z-index: 9999; | |
| position: inherit; | |
| margin-top: 10px; | |
| margin-left: @dimension + 50; | |
| height: 10px; | |
| width: 20px; | |
| border-radius: 0 0 90px 90px; | |
| -moz-border-radius: 0 0 90px 90px; | |
| -webkit-border-radius: 0 0 90px 90px; | |
| border-right: 5px solid #ee3d67; | |
| border-left: 5px solid #ee3d67; | |
| border-bottom: 5px solid #ee3d67; | |
| } | |
| #leg-1 { | |
| display: inline-block; | |
| position: relative; | |
| top: @dimension - 40; | |
| left: 10px; | |
| width: @dimension; | |
| height: @dimension / 5; | |
| background: #162736; | |
| transform: rotate(60deg); | |
| -ms-transform: rotate(60deg); /* IE 9 */ | |
| -webkit-transform: rotate(60deg); /* Safari and Chrome */ | |
| border-top-right-radius: @dimension / 5; | |
| border-bottom-right-radius: @dimension / 5; | |
| } | |
| #leg-2 { | |
| display: inline-block; | |
| position: relative; | |
| top: @dimension - 40; | |
| left: 10px; | |
| width: @dimension; | |
| height: @dimension / 5; | |
| background: #162736; | |
| transform: rotate(-60deg); | |
| -ms-transform: rotate(-60deg); /* IE 9 */ | |
| -webkit-transform: rotate(-60deg); /* Safari and Chrome */ | |
| border-top-left-radius: @dimension / 5; | |
| border-bottom-left-radius: @dimension / 5; | |
| } | |
| #star1 { | |
| margin: 50px 0; | |
| position: relative; | |
| left: -100px; | |
| top: -100px; | |
| display: block; | |
| color: #ffd94d; | |
| width: 0px; | |
| height: 0px; | |
| border-right: 100px solid transparent; | |
| border-bottom: 70px solid #ffd94d; | |
| border-left: 100px solid transparent; | |
| transform: rotate(35deg) scale(0.15); | |
| z-index: 5; | |
| animation: starpopup 16s infinite; | |
| } | |
| #star1:before { | |
| border-bottom: 80px solid #ffd94d; | |
| border-left: 30px solid transparent; | |
| border-right: 30px solid transparent; | |
| position: absolute; | |
| height: 0; | |
| width: 0; | |
| top: -45px; | |
| left: -50px; | |
| display: block; | |
| content: ""; | |
| transform: rotate(-35deg); | |
| } | |
| #star1:after { | |
| position: absolute; | |
| display: block; | |
| color: #ffd94d; | |
| top: 3px; | |
| left: -105px; | |
| width: 0px; | |
| height: 0px; | |
| border-right: 100px solid transparent; | |
| border-bottom: 70px solid #ffd94d; | |
| border-left: 100px solid transparent; | |
| transform: rotate(-70deg); | |
| content: ""; | |
| } | |
| #star2 { | |
| margin: 50px 0; | |
| position: relative; | |
| left: 210px; | |
| top: -220px; | |
| display: block; | |
| color: #ffd94d; | |
| width: 0px; | |
| height: 0px; | |
| border-right: 100px solid transparent; | |
| border-bottom: 70px solid #ffd94d; | |
| border-left: 100px solid transparent; | |
| transform: rotate(35deg) scale(0.15); | |
| z-index: 5; | |
| animation: starpopup 16s infinite; | |
| } | |
| #star2:before { | |
| border-bottom: 80px solid #ffd94d; | |
| border-left: 30px solid transparent; | |
| border-right: 30px solid transparent; | |
| position: absolute; | |
| height: 0; | |
| width: 0; | |
| top: -45px; | |
| left: -65px; | |
| display: block; | |
| content: ""; | |
| transform: rotate(-35deg); | |
| } | |
| #star2:after { | |
| position: absolute; | |
| display: block; | |
| color: #ffd94d; | |
| top: 3px; | |
| left: -105px; | |
| width: 0px; | |
| height: 0px; | |
| border-right: 100px solid transparent; | |
| border-bottom: 70px solid #ffd94d; | |
| border-left: 100px solid transparent; | |
| transform: rotate(-70deg); | |
| content: ""; | |
| } | |
| #star3 { | |
| margin: 50px 0; | |
| position: relative; | |
| left: 45px; | |
| top: -410px; | |
| display: block; | |
| color: #ffd94d; | |
| width: 0px; | |
| height: 0px; | |
| border-right: 100px solid transparent; | |
| border-bottom: 70px solid #ffd94d; | |
| border-left: 100px solid transparent; | |
| transform: rotate(35deg) scale(0.15); | |
| z-index: 5; | |
| animation: starpopup 16s infinite; | |
| } | |
| #star3:before { | |
| border-bottom: 80px solid #ffd94d; | |
| border-left: 30px solid transparent; | |
| border-right: 30px solid transparent; | |
| position: absolute; | |
| height: 0; | |
| width: 0; | |
| top: -45px; | |
| left: -65px; | |
| display: block; | |
| content: ""; | |
| transform: rotate(-35deg); | |
| } | |
| #star3:after { | |
| position: absolute; | |
| display: block; | |
| color: #ffd94d; | |
| top: 3px; | |
| left: -105px; | |
| width: 0px; | |
| height: 0px; | |
| border-right: 100px solid transparent; | |
| border-bottom: 70px solid #ffd94d; | |
| border-left: 100px solid transparent; | |
| transform: rotate(-70deg); | |
| content: ""; | |
| } | |
| @keyframes starpopup{ | |
| 0% {opacity: 0; transform: rotate(35deg) scale(0.1);} | |
| 20% {opacity: 0; transform: rotate(235deg) scale(0.1);} | |
| 21% {opacity: 1; transform: rotate(-135deg) scale(0.1);} | |
| 28% {opacity: 0; transform: rotate(-635deg) scale(0.1);} | |
| 55% {opacity: 0; transform: rotate(135deg) scale(0.1);} | |
| 70% {opacity: 0; transform: rotate(935deg) scale(0.1);} | |
| 71% {opacity: 1; transform: rotate(-135deg) scale(0.1);} | |
| 78% {opacity: 0; transform: rotate(-635deg) scale(0.1);} | |
| 100% {opacity: 0;transform: rotate(35deg) scale(0.1);} | |
| } | |
| @keyframes robotup { | |
| 0% {top: 80%;} | |
| 20% {top: 80%;} | |
| 25% {top: 43%;} | |
| 50% {top: 44%;} | |
| 70% {top: 44%;} | |
| 75% {top: 80%;} | |
| 100% {top: 80%;} | |
| } | |
| @keyframes abduct { | |
| 0% {opacity: 0;} | |
| 42% {opacity: 0;} | |
| 43% {opacity: 0.8; transform: rotateX(75deg) translateY(0px);} | |
| 45% { transform: rotateX(75deg) translateY(200px) scale(0.8); opacity: 0.8;} | |
| 47% {transform: rotateX(75deg) translateY(0px); opacity: 0.8;} | |
| 48% {opacity: 0;} | |
| 100% {opacity: 0;} | |
| } | |
| @keyframes abductreverse { | |
| 0% {opacity: 0;} | |
| 42% {opacity: 0;} | |
| 43% { opacity: 0.8; transform: rotateX(75deg) translateY(0px);} | |
| 45% {opacity: 0.8; transform: rotateX(75deg) translateY(-100px);} | |
| 48% {opacity: 0.8; transform: rotateX(75deg) translateY(0px);} | |
| 49% {opacity: 0;} | |
| 100% {opacity: 0;} | |
| } | |
| @keyframes moveleft { | |
| 0% {left: 350px;} | |
| 100% {left: -500px;} | |
| } | |
| @keyframes spaceshipleft { | |
| 0% {transform: rotate(-10deg); left: 200%;} | |
| 15% {transform: rotate(-10deg);} | |
| 30% {left: 45%; transform: rotate(10deg);} | |
| 40% {left: 50%; transform: rotate(0deg) translateY(0px);} | |
| 45% {left: 50%; transform: rotate(0deg) translateY(-10px);} | |
| 50% { left: 50%; transform: rotate(0deg) translateY(0px);} | |
| 60% {left: 55%; transform: rotate(-10deg);} | |
| 61% {left: 55%;} | |
| 100% {left: -100%;} | |
| } | |
| @keyframes bodycolor { | |
| 0% {background-image: linear-gradient(to top,#ee3d67,#ef466e,#f04f75,#f1567b,#f25e82);} | |
| 20% {background-image: linear-gradient(to top,#ee3d67,#ef466e,#f04f75, #f1567b, #f25e82);} | |
| 21% {background-image: linear-gradient(to right top, #ffffff, #f7f2fa, #f4e4f1,#f3d5e4,#f4c6d2);} | |
| 70% {background-image: linear-gradient(to right top, #ffffff,#f7f2fa,#f4e4f1,#f3d5e4,#f4c6d2);} | |
| 71% {background-image: linear-gradient(to top, #ee3d67, #ef466e, #f04f75, #f1567b, #f25e82);} | |
| 100% {background-image: linear-gradient(to top, #ee3d67, #ef466e, #f04f75, #f1567b, #f25e82);} | |
| } | |
| @keyframes abductcolor { | |
| 0% {border: 2px solid white;} | |
| 20% {border: 2px solid white;} | |
| 21% {border: 2px solid #ee3d67;} | |
| 70% {border: 2px solid #ee3d67;} | |
| 71% {border: 2px solid white;} | |
| 100% {border: 2px solid white;} | |
| } | |
| @keyframes colorswap { | |
| 0% {background-color: #ee3d67;} | |
| 20% {background-color: #ee3d67;} | |
| 21% {background-color: #fff;} | |
| 70% {background-color: #fff;} | |
| 71% {background-color: #ee3d67;} | |
| 100% {background-color: #ee3d67;} | |
| } | |
| @keyframes colorswap_middle { | |
| 0% {background-color: #fff;} | |
| 20% {background-color: #fff;} | |
| 21% {background-color: #ee3d67;} | |
| 70% {background-color: #ee3d67;} | |
| 71% {background-color: #fff;} | |
| 100% {background-color: #fff;} | |
| } |
Pure CSS animation of a robot riding his UFO for the May 2019 codepen challenge
A Pen by Tucker Massad on CodePen.