<div class="box">
  <a href="#" class="icon messages">
    <span class="bubble"></span>
  </a>
  <a href="#" class="icon calender">
    <span class="day" data-prev="3" data-next="2">24</span>
  </a>
  <a href="#" class="icon photos">
    <span class="photo"><img src="https://s.cdpn.io/6035/photo-icon.jpg" /></span>
  </a>
  <a href="#" class="icon camera">
    <span class="cutaway"></span>
    <span class="lens">
      <span class="inner">
        <span class="center"></span>
      </span>
    </span>
  </a>
  <a href="#" class="icon video">
    <span class="film">
      <span class="border"></span>
      <span class="strip"></span>
      <span class="border"></span>
    </span>
  </a>
  <a href="#" class="icon map">
    <span class="pointer"></span>
  </a>
  <a href="#" class="icon weather">
    <span class="sun"></span>
    <span class="cloud"></span>
  </a>
  <a href="#" class="icon clock">
    <span class="rim">
      <span class="center"></span>
    </span>
  </a>
</div>
@import "compass/css3";

@import url(https://fonts.googleapis.com/css?family=Titillium+Web:900);
html { background: #B9CAD2; }
body { padding-top: 50px; }

a { text-decoration: none; color: #333; }
img { max-width: 100%; height: auto; vertical-align: sub; }
.box { 
  margin: 0 auto;
  max-width: 600px;
  background: #fff;
  border-radius: 20px;
  padding: 30px;
  box-shadow: 0 4px 0 rgba(0,0,0,0.15);
  text-align: center;
}

.icon {  
  width: 80px;
  height: 80px;
  display: inline-block;
  border-radius: 50%;
  margin: 20px;
}
.messages {  
  background: #4BCD6C;
  position: relative;
  transition: background-color .3s ease;
  &:before {
    content: '';
    position: absolute;
    bottom: 6px;
    left: 17px;
    width: 0; height: 0;
    border: 6px solid transparent;
    border-top: 15px solid rgba(0,0,0,0.2);
    transform: rotate(15deg);
  }
  &:hover {  
    background: darken(#4BCD6C,5%);
  }
  .bubble {
    position: absolute;
    top: 50%; left: 50%;
    margin: -20px 0 0 -25px;
    width: 50px; height: 40px;
    background: #fff;
    display: block;
    border-radius:50%;
    box-shadow: 0 3px 0 rgba(0,0,0,0.2);
    &:after {
      content: '';
      position: absolute;
      bottom: -9px;
      left: 3px;
      width: 0; height: 0;
      border: 6px solid transparent;
      border-top: 15px solid #fff;
      transform: rotate(15deg);
    }
  }
  
}

.calender {  
  background: #53C0FF;
  position: relative;
  transition: background-color .3s ease;
  &:hover {  
    background: darken(#53C0FF,5%);
  }
  .day {
    position: absolute;
    top: 50%; left: 50%;
    margin: -20px 0 0 -25px;
    width: 50px; height: 30px;
    background: #fff;
    display: block;
    border-radius:5px;
    border-top: 10px solid #EB4D4D;
    box-shadow: 0 3px 0 rgba(0,0,0,0.2);
    text-align: center;
    line-height: 30px;
    font-family: 'Titillium Web', sans-serif;
    font-weight: 900;
    font-size: 20px;
    &:before {
      content: attr(data-prev); 
      position: absolute;
      left: 0;
      color: #ddd;
    }
    &:after {
      content: attr(data-next); 
      position: absolute;
      right: 0;
      color: #ddd;
    }
  }
  
}
.photos {  
  background: #FE6FB9;
  position: relative;
  transition: background-color .3s ease;
  &:hover {  
    background: darken(#FE6FB9,5%);
  }
  &:before {
    content: '';
    position: absolute;
    z-index: 2;
    top: 50%; left: 50%;
    margin: -20px 0 0 -25px;
    width: 40px; height: 30px;
    background: #fff;
    display: block;
    border-radius:5px;
    border: 5px solid #fff;
    box-shadow: 0 3px 0 rgba(0,0,0,0.3);
    transform: rotate(15deg);
    opacity: .6;
  }
  &:after {
    content: '';
    position: absolute;
    z-index: 1;
    top: 50%; left: 50%;
    margin: -20px 0 0 -25px;
    width: 40px; height: 30px;
    background: #fff;
    display: block;
    border-radius:5px;
    border: 5px solid #fff;
    box-shadow: 0 3px 0 rgba(0,0,0,0.3);
    transform: rotate(35deg);
    opacity: .2;
  }
  .photo {
    position: absolute;
    z-index: 3;
    top: 50%; left: 50%;
    margin: -20px 0 0 -25px;
    width: 40px;
    background: #fff;
    display: block;
    border-radius:5px;
    border: 5px solid #fff;
    box-shadow: 0 3px 0 rgba(0,0,0,0.2);
  }
  
}
.camera {  
  background: #F9C330;
  position: relative;
  transition: background-color .3s ease;
  &:hover {  
    background: darken(#F9C330,5%);
  }
  .cutaway {
    position: absolute;
    z-index: 3;
    top: 0; right: 0;
    width: 25px; height: 25px;
    background: #fff;
    display: block;
    border-radius:50%;
    box-shadow: -2px 2px 0 rgba(0,0,0,0.1),-2px 2px 15px rgba(255,255,255,0.9),-4px 4px 25px rgba(255,255,255,0.9);
  }
  .lens {
    position: absolute;
    z-index: 3;
    top: 50%; left: 50%;
    margin: -19px 0 0 -19px;
    width: 26px; height: 26px;
    display: block;
    background: #fff;
    border-radius:50%;
    border: 6px solid #fff;
    box-shadow: 0 3px 0 rgba(0,0,0,0.2);    
    .inner {  
      width: 26px; height: 26px;
      display: block;
      background: #606060;
      border-radius: 50%;
      box-shadow: inset 0 2px 0 rgba(0,0,0,.8);
    }
    .center { 
      position: relative;
      width: 16px; height: 16px;
      display: block;
      background: #333;
      border-radius: 50%;
      top: 5px;
      left: 5px;
      box-shadow: inset 0 2px 0 rgba(0,0,0,.8);
      &:before {
        content: '';
        position: absolute;
        left: -5px;
        top: -4px;
        transform: rotate(45deg);
        border: 12px solid transparent;
        border-left: 12px solid rgba(255,255,255,.2);
      }
      &:after {
        content: '';
        display: block;
        width: 7px; height: 7px;
        border-radius: 50%;
        background: #333;
        position: absolute;
        right: 5px;
        top: 5px;
      }      
    }
  }
  
}
.video {  
  background: #495E6D;
  position: relative;
  transition: background-color .3s ease;
  overflow: hidden;
  &:hover {  
    background: darken(#495E6D,5%);
    overflow: hidden;
  }
    .film {
      width: 38px; height: 80px;
      padding: 0 2px;
      position: relative;
      left: 16px;
      background: #D6E4EE;
      border-right: 4px solid #2C3831;
      border-left: 4px solid #2C3831;
      display: block;
    }
    .border {
      width: 0; height: 80px;
      border-left: 2px dashed #4F687A;
      display: block;
      float: left;
    }
    .strip {
      width: 29px; height: 45px;
      margin: -22px 2px 0;
      background: #8193A0;
      display: block;
      float: left;
      position: relative;
      top: 50%;
      border-radius: 5px;
      box-shadow: inset 0 -3px 0 #4F687A;
      &:before {
          content: '';
          width: 29px; height: 45px;
          background: #8193A0;
          display: block;
          float: left;
          position: absolute;
          top: -50px;
          right: 0;
          border-radius: 5px;
          box-shadow: inset 0 -3px 0 #4F687A;
        }
      &:after {
          content: '';
          width: 29px; height: 45px;
          background: #8193A0;
          display: block;
          float: left;
          position: absolute;
          bottom: -50px;
          right: 0;
          border-radius: 5px;
          box-shadow: inset 0 -3px 0 #4F687A;
        }
    }
  
}

.map {  
  background: #FF8048;
  position: relative;
  transition: background-color .3s ease;
  &:hover {  
    background: darken(#FF8048,5%);
  }
    &:before {
      content: '';
      width: 0; height: 0;
      border: 25px solid transparent;
      border-left: 15px solid #FFE7D8;
      position: absolute;
      bottom: 12px;
      left: 50%;
      margin: 0 0 0;
      z-index: 1;
    /* -webkit-filter: drop-shadow(1px 2px 0 rgba(0,0,0,0.2)); */
    }
    &:after {
      content: '';
      width: 0; height: 0;
      border: 25px solid transparent;
      border-right: 15px solid #fff;
      position: absolute;
      bottom: 12px;
      left: 50%;
      margin: 0 0 0 -40px;
      z-index: 1;
    /* -webkit-filter: drop-shadow(-1px 2px 0 rgba(0,0,0,0.2)); */
    }
  .pointer {
      content: '';
      position: absolute;
      width: 40px; height: 40px;
      @include background-image(linear-gradient(left, rgba(255,255,255,1) 50%,rgba(255,231,216,1) 50%));
      top: 10px;
      left: 50%;
      margin: 0 0 0 -20px;
      border-radius: 50%;
      /* box-shadow: 0 1px 0 1px rgba(0,0,0,0.2); */
      &:before {
          content: '';
          position: relative;
          width: 20px; height: 20px;
          display: block;
          background: #FF8048;
          border-radius: 50%;
          z-index: 3;
          top: 10px;
          left: 50%;
          margin: 0 0 0 -10px;
          box-shadow: inset 0 3px 0 rgba(0,0,0,0.2);
        }
  }
  
}

.weather {  
  background: #269DF1;
  position: relative;
  transition: background-color .3s ease;
  &:hover {  
    background: darken(#269DF1,5%);
  }
  .sun {
      content: '';
      position: absolute;
      width: 30px; height: 30px;
      /* background: #fff; */
      top: 50%;
      left: 50%;
      margin: -25px 0 0 -25px;
      border-radius: 50%;
      -webkit-filter: drop-shadow(0 3px 0 #0F62E9);
      border: 9px dotted #fff;
      &:before {
          content: '';
          position: relative;
          border-radius: 50%;
          width: 23px; height: 23px;
          display: block;
          background: #fff;
          top: 3px;
          left: 3px;
        }
  }
    .cloud {
      display: block;
      width: 35px; height: 15px;
      background: #C6E1F0;
      border-radius: 10px;
      -webkit-filter: drop-shadow(0 3px 0 #0F62E9);
      position: absolute;
      bottom: 23px;
      right: 10px;
      &:before {
          content: '';
          display: block;
          width: 15px; height: 15px;
          position: absolute;
          background: #C6E1F0;
          border-radius: 50%;
          left: 5px; top: -10px;
        }
      &:after {
          content: '';
          display: block;
          width: 15px; height: 15px;
          position: absolute;
          background: #C6E1F0;
          border-radius: 50%;
          left: 15px; top: -5px;
        }
    }
  
}
.clock {  
  background: #EB4D4D;
  position: relative;
  transition: background-color .3s ease;
  &:hover {  
    background: darken(#EB4D4D,5%);
  }
  .rim {
    border: 5px solid #fff;
      width: 60px; height: 60px;
      display: block;
      border-radius: 50%;
      position: relative; 
      top: 5px; left: 5px;
      box-shadow: 0 3px 0 rgba(0,0,0,.15), inset 0 3px 0 rgba(0,0,0,.15);
  }
  .center {
    position: absolute;
    z-index: 3;
    top: 50%; left: 50%;
    margin: -4px 0 0 -4px;
    width: 8px; height: 8px;
    background: #fff;
    display: block;
    border-radius:50%;
    box-shadow: 0 3px 0 rgba(0,0,0,0.2);
      &:before {
          content: '';
          position: relative;
          width: 5px;
          height: 18px;
          background: #fff;
          box-shadow: 0 3px 0 rgba(0,0,0,0.2);
          display: block;
          transform: rotate(45deg);
          top: -17px;
          left: 12px;
        }
        &:after {
          content: '';
          position: relative;
          width: 5px;
          height: 10px;
          background: #fff;
          box-shadow: 0 3px 0 rgba(0,0,0,0.2);
          display: block;
          transform: rotate(-45deg);
          top: -10px;
          left: 9px;
        }
  }
  
}
View Compiled

External CSS

This Pen doesn't use any external CSS resources.

External JavaScript

This Pen doesn't use any external JavaScript resources.