<div class="img-container">
  <h2>Welcome!</h2>
  <h3>Insert Subtitle Here</h3>
</div>

<div class="preloader">
  <div class="circle circle1"></div>
  <div class="circle circle2"></div>
  <div class="circle circle3"></div>
</div>
body { padding: 0; margin: 0; background-color: #3E3C41; font-family: 'Montserrat', sans-serif; }
body, html { width: 100%; height: 100%; }

.img-container {
/*   background-image: url('https://s3-us-west-2.amazonaws.com/s.cdpn.io/409269/valley.jpg'); */
  background-position: top center;
  background-size: cover;
  width: 100%;
  height: 100%;
  z-index: 5;
  position: absolute;
}

.img-container h2, .img-container h3 {
  color: white;
  text-align: center;
  position: relative;
  text-shadow: 0 4px 4px rgba(0,0,0,.4);
}

h2 { font-size: 70px; margin-bottom: 0; }
h3 { font-size: 40px; margin-top: 0; }

.preloader {
  width: 100%;
  height: 100%;
  background-color: #3E3C41;
  z-index: 10;
  position: absolute;
}

.circle {
  opacity: 0;
  border-radius: 190px;
  box-shadow: 0 4px 8px rgba(0,0,0,.4);
  position: absolute;
  top: 50%;
  left:50%;
}

.circle1 {
  background-color: #7752d5;
  width: 240px;
  height: 240px;
  margin-top: -120px;
  margin-left: -120px;
}

.circle2 {
  background-color: #8362d9;
  width: 170px;
  height: 170px;
  margin-top: -85px;
  margin-left: -85px;
}

.circle3 {
  background-color: #9f88d6;
  width: 100px;
  height: 100px;
  margin-top: -50px;
  margin-left: -50px;
}
var $circles = $(".circle"),
    tl = new TimelineMax(),
    imageUrls = [
      'https://s3-us-west-2.amazonaws.com/s.cdpn.io/409269/valley.jpg?' + getRandomNum(),
      'https://s3-us-west-2.amazonaws.com/s.cdpn.io/409269/valley.jpg?' + getRandomNum(),
      'https://s3-us-west-2.amazonaws.com/s.cdpn.io/409269/valley.jpg?' + getRandomNum(),
      'https://s3-us-west-2.amazonaws.com/s.cdpn.io/409269/valley.jpg?' + getRandomNum(),
      'https://s3-us-west-2.amazonaws.com/s.cdpn.io/409269/valley.jpg?' + getRandomNum(),
      'https://s3-us-west-2.amazonaws.com/s.cdpn.io/409269/valley.jpg?' + getRandomNum(),
      'https://s3-us-west-2.amazonaws.com/s.cdpn.io/409269/valley.jpg?' + getRandomNum(),
      'https://s3-us-west-2.amazonaws.com/s.cdpn.io/409269/valley.jpg?' + getRandomNum(),
      'https://s3-us-west-2.amazonaws.com/s.cdpn.io/409269/valley.jpg?' + getRandomNum(),
      'https://s3-us-west-2.amazonaws.com/s.cdpn.io/409269/valley.jpg?' + getRandomNum()
    ],
    images = [];

for (var i = 0; i < imageUrls.length; i++) {
  images.push($("<img>"));
  images[i].load(loaderOut);
  images[i].attr("src", imageUrls[i]);
}

function getRandomNum() {
  return Math.floor(Math.random() * 10000);
}

function loaderOut() {
  console.log("Image is done loading");
}

TweenMax.set($circles, { scale: 0 });

tl.insert(
  TweenMax.staggerTo($circles.toArray(), 1, {
    opacity: 1,
    scale: 1,
    ease: Power1.easeIn
  }, .2)
);

tl.insert(
  TweenMax.staggerTo($circles.toArray(), .5, {
    scale: 1.2,
    boxShadow: "0 25px 25px rgba(0,0,0,.4)",
    repeat: -1,
    yoyo: true,
    ease: Power1.easeOut
  }, .2), "-=.4"
);

External CSS

  1. https://maxcdn.bootstrapcdn.com/font-awesome/4.4.0/css/font-awesome.min.css
  2. https://fonts.googleapis.com/css?family=Montserrat:400,700

External JavaScript

  1. https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js
  2. https://cdnjs.cloudflare.com/ajax/libs/gsap/1.18.0/TweenMax.min.js