<h1>Pure CSS One Div Weather Animated Icons</h1>
<div id="fabrizio"></div>
<a href="http://fabrizio.co">fabrizio.co</a>

<div class="container">
  <div class="sunny"></div> 
  <div class="cloudy"></div>
  <div class="rainy"></div>
  <div class="snowy"></div>
  <div class="rainbow"></div>
  <div class="starry"></div>
  <div class="stormy"></div>
</div>
/* SUNNY */
.sunny { 
  animation: sunny 15s linear infinite;
  background: linear-gradient(top, rgba(255,255,255,0) 0%, rgba(255,255,255,0.8) 50%, rgba(255,255,255,0) 100%); 
  height: 140px;
  width: 20px; 
  margin-left: -15px;
  position: absolute;
  left: 90px;  
  top: 20px;
}
.sunny:before {
  background: linear-gradient(top, rgba(255,255,255,0) 0%, rgba(255,255,255,0.8) 50%, rgba(255,255,255,0) 100%);
  content: ''; 
  height: 140px; 
  width: 20px;
  opacity: 1; 
  position: absolute;
  bottom: 0px;
  left: 0px; 
  transform: rotate(90deg);
}
.sunny:after {
  background: #FFEE44; 
  border-radius: 50%; 
  box-shadow: rgba(255,255,0,0.2) 0 0 0 15px;
  content: '';  
  height: 80px;
  width: 80px;  
  position: absolute; 
  left: -30px; 
  top: 30px;
}
@keyframes sunny { 
  0% { transform: rotate(0deg); }
  100% { transform: rotate(360deg); }
}

/* CLOUDY */
.cloudy {
  animation: cloudy 5s ease-in-out infinite;
  background: #FFFFFF;
  border-radius: 50%;
  box-shadow: 
    #FFFFFF 65px -15px 0 -5px, 
    #FFFFFF 25px -25px, 
    #FFFFFF 30px 10px, 
    #FFFFFF 60px 15px 0 -10px, 
    #FFFFFF 85px 5px 0 -5px;
  height: 50px;
  width: 50px; 
  margin-left: -60px;
  position: absolute;
  left: 255px;
  top: 70px; 
}
.cloudy:after {
  animation: cloudy_shadow 5s ease-in-out infinite;
  background: #000000;
  border-radius: 50%;
  content: '';
  height: 15px;
  width: 120px;
  opacity: 0.2;
  position: absolute;
  left: 5px; 
  bottom: -60px;
  transform: scale(1);
}
@keyframes cloudy {
  50% { transform: translateY(-20px); }
}
@keyframes cloudy_shadow {
  50% { transform: translateY(20px) scale(.7); opacity:.05; }
}

/* RAINY */
.rainy {
  animation: rainy 5s ease-in-out infinite 1s;
  background: #CCCCCC; 
  border-radius: 50%;
  box-shadow: 
    #CCCCCC 65px -15px 0 -5px, 
    #CCCCCC 25px -25px, 
    #CCCCCC 30px 10px, 
    #CCCCCC 60px 15px 0 -10px, 
    #CCCCCC 85px 5px 0 -5px;
  display: block;
  height: 50px;
  width: 50px;
  margin-left: -60px;
  position: absolute;
  left: 427px;
  top: 70px;
}
.rainy:after {
  animation: rainy_shadow 5s ease-in-out infinite 1s;
  background: #000000;
  border-radius: 50%;
  content: '';
  height: 15px;
  width: 120px;
  opacity: 0.2;
  position: absolute;
  left: 5px; 
  bottom: -60px;
  transform: scale(1);
}
.rainy:before {
  animation: rainy_rain .7s infinite linear;
  content: '';
  background: #CCCCCC;
  border-radius: 50%;
  display: block;
  height: 6px;
  width: 3px;
  opacity: 0.3;
  transform: scale(.9);
}
@keyframes rainy {
  50% { transform: translateY(-20px); }
}
@keyframes rainy_shadow {
  50% { transform: translateY(20px) scale(.7); opacity: 0.05; }
}
@keyframes rainy_rain {
  0% {  
    box-shadow: 
      rgba(0,0,0,0) 30px 30px, 
      rgba(0,0,0,0) 40px 40px,  
      #000 50px 75px, 
      #000 55px 50px, 
      #000 70px 100px, 
      #000 80px 95px, 
      #000 110px 45px, 
      #000 90px 35px; 
  }
  25% {  
      box-shadow: 
      #000 30px 45px,
      #000 40px 60px,
      #000 50px 90px,
      #000 55px 65px,
      rgba(0,0,0,0) 70px 120px,
      rgba(0,0,0,0) 80px 120px,
      #000 110px 70px,
      #000 90px 60px;
  }
  26% {  
    box-shadow:
      #000 30px 45px,
      #000 40px 60px,
      #000 50px 90px,
      #000 55px 65px,
      rgba(0,0,0,0) 70px 40px,
      rgba(0,0,0,0) 80px 20px,
      #000 110px 70px,
      #000 90px 60px; 
  }
  50% { 
    box-shadow:
      #000 30px 70px,
      #000 40px 80px,
      rgba(0,0,0,0) 50px 100px,
      #000 55px 80px,
      #000 70px 60px,
      #000 80px 45px,
      #000 110px 95px,
      #000 90px 85px;
  }
  51% {
    box-shadow:
      #000 30px 70px,
      #000 40px 80px,
      rgba(0,0,0,0) 50px 45px,
      #000 55px 80px,
      #000 70px 60px,
      #000 80px 45px,
      #000 110px 95px,
      #000 90px 85px;
  }
  75% {
    box-shadow:
      #000 30px 95px,
      #000 40px 100px,
      #000 50px 60px,
      rgba(0,0,0,0) 55px 95px,
      #000 70px 80px,
      #000 80px 70px,
      rgba(0,0,0,0) 110px 120px,
      rgba(0,0,0,0) 90px 110px;
  }
  76% {
    box-shadow:
      #000 30px 95px,
      #000 40px 100px,
      #000 50px 60px,
      rgba(0,0,0,0) 55px 35px,
      #000 70px 80px,
      #000 80px 70px,
      rgba(0,0,0,0) 110px 25px,
      rgba(0,0,0,0) 90px 15px;
  }
  100% {
    box-shadow:
      rgba(0,0,0,0) 30px 120px,
      rgba(0,0,0,0) 40px 120px,
      #000 50px 75px,
      #000 55px 50px,
      #000 70px 100px,
      #000 80px 95px,
      #000 110px 45px,
      #000 90px 35px;
  }
}


/* RAINBOW */
.rainbow {
  animation: rainbow 5s ease-in-out infinite;
  border-radius: 170px 0 0 0;
  box-shadow: 
    #FB323C -2px -2px 0 1px,
    #F99716 -4px -4px 0 3px,
    #FEE124 -6px -6px 0 5px,
    #AFDF2E -8px -8px 0 7px,
    #6AD7F8 -10px -10px 0 9px,
    #60B1F5 -12px -12px 0 11px,
    #A3459B -14px -14px 0 13px;
  height: 70px;
  width: 70px;
  margin-left: -40px;
  position: absolute;
  left: 610px;
  top: 71px;
    transform: rotate(40deg);
}
.rainbow:after {
  animation: rainbow_shadow 5s ease-in-out infinite;
  background: #000000;
  border-radius: 50%;
  content: '';
  opacity: 0.2;
  height: 15px;
  width: 120px;
  position: absolute;
  bottom: -23px; 
  left: 17px;
    transform: rotate(-40deg);
    transform-origin: 50% 50%;
}
@keyframes rainbow {
  50% { transform: rotate(50deg); }
}
@keyframes rainbow_shadow {
  50% { transform:  rotate(-50deg) translate(10px) scale(.7); opacity: 0.05; }
}

/* STARRY */
.starry {
    animation: starry_star 5s ease-in-out infinite;
  background: #fff;
  border-radius: 50%;  
  box-shadow:  
        #FFFFFF 26px 7px 0 -1px, 
        rgba(255,255,255,0.1) -36px -19px 0 -1px, 
        rgba(255,255,255,0.1) -51px -34px 0 -1px,
        #FFFFFF -52px -62px 0 -1px, 
        #FFFFFF 14px -37px, 
        rgba(255,255,255,0.1) 41px -19px,  
        #FFFFFF 34px -50px,
        rgba(255,255,255,0.1) 14px -71px 0 -1px,
        #FFFFFF 64px -21px 0 -1px, 
        rgba(255,255,255,0.1) 32px -85px 0 -1px,
        #FFFFFF 64px -90px,
        rgba(255,255,255,0.1) 60px -67px 0 -1px,  
        #FFFFFF 34px -127px,
        rgba(255,255,255,0.1) -26px -103px 0 -1px;
  height: 4px;
  width: 4px; 
    margin-left: -10px;
  opacity: 1;
  position: absolute;
    left: 777px; 
    top: 150px;
}
.starry:after { 
  animation: starry 5s ease-in-out infinite;
  border-radius: 50%;
  box-shadow: #FFFFFF -25px 0;
  content: '';
  height: 100px;
  width: 100px;
  position: absolute;
  top: -106px; 
  transform: rotate(-5deg);
  transform-origin: 0 50%;
}

@keyframes starry {
  50% { transform: rotate(10deg); }
}
@keyframes starry_star {
  50% { 
  box-shadow:  
    rgba(255,255,255,0.1) 26px 7px 0 -1px, 
        #FFFFFF -36px -19px 0 -1px, 
        #FFFFFF -51px -34px 0 -1px,
        rgba(255,255,255,0.1) -52px -62px 0 -1px, 
        rgba(255,255,255,0.1) 14px -37px,
        #FFFFFF 41px -19px,   
        rgba(255,255,255,0.1) 34px -50px,
        #FFFFFF 14px -71px 0 -1px,
        rgba(255,255,255,0.1) 64px -21px 0 -1px, 
        #FFFFFF 32px -85px 0 -1px,
        rgba(255,255,255,0.1) 64px -90px,
        #FFFFFF 60px -67px 0 -1px,  
        rgba(255,255,255,0.1) 34px -127px,
        #FFFFFF -26px -103px 0 -1px;
  }
}

/* STORMY */
.stormy {
  animation: stormy 5s ease-in-out infinite;
  background: #222222;
  border-radius: 50%;
  box-shadow: 
    #222222 65px -15px 0 -5px, 
    #222222 25px -25px, 
    #222222 30px 10px, 
    #222222 60px 15px 0 -10px, 
    #222222 85px 5px 0 -5px;
  height: 50px;  
  width: 50px; 
  margin-left: -70px; 
  position: absolute;
  left: 947px; 
  top: 70px; 
}
.stormy:after {
  animation: stormy_shadow 5s ease-in-out infinite;
  background: #000;
  border-radius: 50%;
  content: '';
  height: 15px; 
  width: 120px; 
  opacity: 0.2;
  position: absolute;
  left: 5px; 
  bottom: -60px;
  transform: scale(1);
}
.stormy:before {
  animation: stormy_thunder 2s steps(1, end) infinite; 
  border-left: 0px solid transparent;
  border-right: 7px solid transparent;
  border-top: 43px solid yellow; 
  box-shadow: yellow -7px -32px;
  content: '';
  display: block;
  height: 0;
  width: 0;
  position: absolute;
  left: 57px;
  top: 70px;
  transform: rotate(14deg);
  transform-origin: 50% -60px;
}
@keyframes stormy {
  50% { transform: translateY(-20px); } 
}  
@keyframes stormy_shadow {
  50% { transform: translateY(20px) scale(.7); opacity: 0.05; }
}
@keyframes stormy_thunder {
  0%  { transform: rotate(20deg); opacity:1; }
  5%  { transform: rotate(-34deg); opacity:1; }
  10% { transform: rotate(0deg); opacity:1; }
  15% { transform: rotate(-34deg); opacity:0; }
}

/* SNOWY */
.snowy {
  animation: snowy 5s ease-in-out infinite 1s;
  background: #FFFFFF; 
  border-radius: 50%;
  box-shadow: 
    #FFFFFF 65px -15px 0 -5px, 
    #FFFFFF 25px -25px, 
    #FFFFFF 30px 10px, 
    #FFFFFF 60px 15px 0 -10px, 
    #FFFFFF 85px 5px 0 -5px;
  display: block;
  height: 50px;
  width: 50px;
  margin-left: -60px;
  position: absolute;
  left: 1112px;
  top: 70px;
}
.snowy:after {
  animation: snowy_shadow 5s ease-in-out infinite 1s;
  background: #000000;
  border-radius: 50%;
  content: '';
  height: 15px;
  width: 120px;
  opacity: 0.2;
  position: absolute;
  left: 8px;
  bottom: -60px;
  transform: scale(1);
}
.snowy:before {
  animation: snowy_snow 2s infinite linear;
  content: '';
  border-radius: 50%;
  display: block;
  height: 7px;
  width: 7px;
  opacity: 0.8;
  transform: scale(.9);
}
@keyframes snowy {
  50% { transform: translateY(-20px); }
}
@keyframes snowy_shadow {
  50% { transform: translateY(20px) scale(.7); opacity: 0.05; }
}
@keyframes snowy_snow {
  0% {  
    box-shadow: 
      rgba(238,238,238,0) 30px 30px, 
      rgba(238,238,238,0) 40px 40px,  
      #EEEEEE 50px 75px, 
      #EEEEEE 55px 50px, 
      #EEEEEE 70px 100px, 
      #EEEEEE 80px 95px, 
      #EEEEEE 110px 45px, 
      #EEEEEE 90px 35px; 
  }
  25% {  
      box-shadow: 
      #EEEEEE 30px 45px,
      #EEEEEE 40px 60px,
      #EEEEEE 50px 90px,
      #EEEEEE 55px 65px,
      rgba(238,238,238,0) 70px 120px,
      rgba(238,238,238,0) 80px 120px,
      #EEEEEE 110px 70px,
      #EEEEEE 90px 60px;
  }
  26% {  
    box-shadow:
      #EEEEEE 30px 45px,
      #EEEEEE 40px 60px,
      #EEEEEE 50px 90px,
      #EEEEEE 55px 65px,
      rgba(238,238,238,0) 70px 40px,
      rgba(238,238,238,0) 80px 20px,
      #EEEEEE 110px 70px,
      #EEEEEE 90px 60px; 
  }
  50% { 
    box-shadow:
      #EEEEEE 30px 70px,
      #EEEEEE 40px 80px,
      rgba(238,238,238,0) 50px 100px,
      #EEEEEE 55px 80px,
      #EEEEEE 70px 60px,
      #EEEEEE 80px 45px,
      #EEEEEE 110px 95px,
      #EEEEEE 90px 85px;
  }
  51% {
    box-shadow:
      #EEEEEE 30px 70px,
      #EEEEEE 40px 80px,
      rgba(238,238,238,0) 50px 45px,
      #EEEEEE 55px 80px,
      #EEEEEE 70px 60px,
      #EEEEEE 80px 45px,
      #EEEEEE 110px 95px,
      #EEEEEE 90px 85px;
  }
  75% {
    box-shadow:
      #EEEEEE 30px 95px,
      #EEEEEE 40px 100px,
      #EEEEEE 50px 60px,
      rgba(238,238,238,0) 55px 95px,
      #EEEEEE 70px 80px,
      #EEEEEE 80px 70px,
      rgba(238,238,238,0) 110px 120px,
      rgba(238,238,238,0) 90px 110px;
  }
  76% {
    box-shadow:
      #EEEEEE 30px 95px,
      #EEEEEE 40px 100px,
      #EEEEEE 50px 60px,
      rgba(238,238,238,0) 55px 35px,
      #EEEEEE 70px 80px,
      #EEEEEE 80px 70px,
      rgba(238,238,238,0) 110px 25px,
      rgba(238,238,238,0) 90px 15px;
  }
  100% {
    box-shadow:
      rgba(238,238,238,0) 30px 120px,
      rgba(238,238,238,0) 40px 120px,
      #EEEEEE 50px 75px,
      #EEEEEE 55px 50px,
      #EEEEEE 70px 100px,
      #EEEEEE 80px 95px,
      #EEEEEE 110px 45px,
      #EEEEEE 90px 35px;
  }
}









































body {
  font-family: sans-serif;
  background: #f5f5f5;
  margin: 0;
}
h1 {
  text-align: center;
  font-weight: 400;
  position: absolute;
  width: 100%;
  font-size: 15px;
  top: 50%;
  margin-top: -130px;
    opacity: .6;
    letter-spacing: 2px;
}
#fabrizio {
  border-top: 100px solid black; 
  border-right: 63px solid transparent;
  width: 0;
  transform: scale(.33);
  transform-origin: 0 0;
  margin: 20px;
  opacity:.6;
    display: none;
}
#fabrizio:before {
  background: black;
  width: 20px;
  height: 30px;
  content: '';
  display: block;
  transform: skewX(-32deg);
  position: relative;
  top: -64px;
  left: 30px;
}
#fabrizio:after {
  background: black;
  width: 40px;
  height: 36px;
  content: '';
  display: block;
  transform: skewX(-32deg);
  position: relative;
  top: -130px;
  left: 50px;
}
a { 
  position: absolute;
  top: 30px;
  left: 60px;
  color: #777;
  text-decoration: none;
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 1px;
  display: none;
}

.container {
  background: linear-gradient(left, #00BBFF, #00BBFF 14.3%, #2EB5E5 14.3%, #2EB5E5 28.6%, #E6E6E6 28.6%, #E6E6E6 42.9%, #F3D166 42.9%, #F3D166 57.2%, #222233 57.2%, #222233 71.5%, #444444 71.5%, #444444 85.8%, #85DB8C 85.8%);
  transform: scale(.9);
  width: 1200px;
  position: absolute;
  height: 210px;
  left: 50%;
  top: 50%;
  margin: -65px -600px;
}
//You may also like Plugin
/*alsolike(
  "LwlqI", "100 followers jelly cake!",
  "nKCsI", "Semantic Sandwich",
  "vlrnd", "CSS Only iPhone 6" 
);*/

External CSS

This Pen doesn't use any external CSS resources.

External JavaScript

  1. https://codepen.io/fbrz/pen/9a3e4ee2ef6dfd479ad33a2c85146fc1.js