Image gallery

HTML

<div id="overlay"></div>
<div id="container">
  <div class="imagepluscontainer">
    <div class="photo"><img src="http://s.cdpn.io/37045/wedding-1.jpg" alt="" class="photo-image" />
      <div class="desc rightslide">Bdjfjffjkfjgjfgjfgjfgjfgjfjkg</div>
    </div>
  </div>
  <div class="imagepluscontainer">
    <div class="photo"><img src="http://s.cdpn.io/37045/wedding-2.jpg" alt="" class="photo-image" />
      <div class="desc rightslide">Bdjfjffjkfjgjfgjfgjfgjfgjfjkg</div>
    </div>
  </div>
  <div class="imagepluscontainer">
    <div class="photo"><img src="http://s.cdpn.io/37045/wedding-3.jpg" alt="" class="photo-image" />
      <div class="desc rightslide">Bdjfjffjkfjgjfgjfgjfgjfgjfjkg</div>
    </div>
  </div>
  <div class="imagepluscontainer">
    <div class="photo"><img src="http://s.cdpn.io/37045/wedding-4.jpg" alt="" class="photo-image" />
      <div class="desc rightslide">Bdjfjffjkfjgjfgjfgjfgjfgjfjkg</div>
    </div>
  </div>
  <div class="imagepluscontainer">
    <div class="photo"><img src="http://s.cdpn.io/37045/wedding-5.jpg" alt="" class="photo-image" />
      <div class="desc rightslide">Bdjfjffjkfjgjfgjfgjfgjfgjfjkg</div>
    </div>
  </div>
  <div class="imagepluscontainer">
    <div class="photo"><img src="http://s.cdpn.io/37045/wedding-6.jpg" alt="" class="photo-image" />
      <div class="desc rightslide">Bdjfjffjkfjgjfgjfgjfgjfgjfjkg</div>
    </div>
  </div>
  <div class="imagepluscontainer">
    <div class="photo"><img src="http://s.cdpn.io/37045/wedding-1.jpg" alt="" class="photo-image" />
      <div class="desc rightslide">Bdjfjffjkfjgjfgjfgjfgjfgjfjkg</div>
    </div>
  </div>
  <div class="imagepluscontainer">
    <div class="photo"><img src="http://s.cdpn.io/37045/wedding-2.jpg" alt="" class="photo-image" />
      <div class="desc rightslide">Bdjfjffjkfjgjfgjfgjfgjfgjfjkg</div>
    </div>
  </div>
  <div class="imagepluscontainer">
    <div class="photo"><img src="http://s.cdpn.io/37045/wedding-3.jpg" alt="" class="photo-image"...

CSS

#container {
  width: 850px;
  position: relative;
  margin: 0 auto;
  top: 50px;
}

#overlay {
  cursor: pointer;
  position: absolute;
  top: 0;
  left: 0;
  height: 100%;
  width: 100%;
  background: #000;
  opacity: .7;
  z-index: 2000;
  display: none;
}

.photo {
  position: relative;
  float: left;
  height: 100px;
  width: 100px;
}

.photo-image {
  cursor: pointer;
  position: relative;
  top: 1px;
  left: 1px;
  width: 100px;
  border: 1px solid #999;
  z-index: 1000;
  opacity: 0.6;
  transition: width 1s, top 1s, left 1s, opacity 1s, z-index .01s;
}

.photo-image:hover {
  width: 200px;
  top: -50px;
  left: -50px;
  z-index: 1001;
  opacity: 1;
}

.photo-image.hovered {
  width: 200px;
  top: -50px;
  left: -50px;
  z-index: 1001;
  opacity: 1;
}

.photo-selected {
  cursor: default;
  z-index: 2001;
  width: 500px;
  opacity: 1;
  top: -20px;
  left: -200px;
  box-shadow: 0 0 30px rgba(0, 0, 0, 0.5);
}

.photo-selected:hover {
  width: 500px;
  top: -50px;
  left: -50px;
  z-index: 2001;
  opacity: 1;
  top: -20px;
  left: -200px;
}

.imagepluscontainer div.desc {
  /* CSS for desc div of each image. */
  position: absolute;
  width: 90%;
  z-index: 1;
  /* Set z-index to that less than image's, so it's hidden beneath it */
  bottom: 0;
  /* Default position of desc div is bottom of container, setting it up to slide down */
  left: 5px;
  padding: 8px;
  background: rgba(0, 0, 0, 0.8);
  /* black bg with 80% opacity */
  color: white;
  -moz-border-radius: 0 0 8px 8px;
  /* CSS3 rounded borders */
  -webkit-border-radius: 0 0 8px 8px;
  border-radius: 0 0 8px 8px;
  opacity: 0;
  /* Set initial opacity to 0 */
  -moz-box-shadow: 0 0 6px rgba(0, 0, 0, 0.8);
  /* CSS3 shadows */
  -webkit-box-shadow: 0 0 6px rgba(0, 0, 0, 0.8);
  box-shadow: 0 0 6px rgba(0, 0, 0, 0.8);
  -moz-transition: all 0.5s ease 0.5s;
  /* Enable CSS3 transition on desc div. Final 0.5s value is the delay before animation starts */
  -webkit-transition: all 0.5s ease 0.5s;
 ...

JavaScript

$(function() {
  // View the selected photo at full size
  $(".photo-image").click(function() {
    $(this).addClass("photo-selected");
    $(this).parent().addClass("photo-x");
    $("#overlay").show();
  });

  // Close the full size view when #overlay is clicked
  $("#overlay").click(function() {
    $(".photo-image").removeClass("photo-selected");
    $(".photo-x").removeClass("photo-x");
    $("#overlay").hide();
  });
});

// Close full size view if "esc"
$(document).keyup(function(e) {
  if (e.keyCode == 27) {
    $(".photo-image").removeClass("photo-selected");
    $("#overlay").hide();
  }
});

setInterval(function(){
    $('.imagepluscontainer').removeClass('hovered');
    $('.photo-image').removeClass('hovered');
    
    var x = Math.floor((Math.random() * ($('.imagepluscontainer').length-1)) + 0);
    $('.imagepluscontainer').eq(x).addClass('hovered');
    $('.photo-image').eq(x).addClass('hovered');
}, 2000);