<div class="container" id="container">
    <ul>
      <li class="active"><img src="http://static.burnmind.com/demos/blinds-slideshow/photo_1.jpg" alt="" /></li>
      <li><img src="http://static.burnmind.com/demos/blinds-slideshow/photo_2.jpg" alt="" /></li>
      <li><img src="http://static.burnmind.com/demos/blinds-slideshow/photo_3.jpg" alt="" /></li>
      <li><img src="http://static.burnmind.com/demos/blinds-slideshow/photo_4.jpg" alt="" /></li>
    </ul>
</div>

<p class="larger">read the tutorial <a href="http://burnmind.com/tutorials/blinds-transition-slideshow-jquery">how to build a slideshow with a blinds transition using jQuery</a> @ <a href="http://burnmind.com/">burnmind.com</a></p>

<p>photos by <a href="http://www.flickr.com/photos/zoutedrop/">Bart Hiddink</a>, <a href="http://www.flickr.com/photos/epsos/">epSos .de</a>, and <a href="http://www.flickr.com/photos/billyboysfotocolection/">Billy Lindblom</a></p>
body
{
  background-color: #000;
  padding: 2%;
  color: #ccc;
  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
  font-size: 1em;
}

a
{
  color: #0CC5DA;
  text-decoration: none;
}

a:hover
{
  color: #DCE808;
  text-decoration: underline;
}

p
{
  margin: 0 auto;
  width: 960px;
  margin-top: 1%;
  text-align: center;
}

p.larger
{
  font-size: 1.1em;
}

.container
{
  margin: 0 auto;
  position: relative;
  overflow: hidden;
}

.container span
{
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
  position: absolute;
}

.container ul, .container li
{
  padding: 0;
  margin: 0;
  list-style: none;
}

.container li
{
  display: none;
}

.container li.active
{
  display: inline;
}
$(document).ready(function(){
  var width = 960;
  height = 538;
  var numberOfBlinds = 20;
  var margin = 2;
  var color = '#000';
  gapHeight = 100;

  var container = $('#container');

  container.width(width).height(height);
  var blindWidth = width / numberOfBlinds;

  images = new Array();
  $('ul li', container).each(function() {
    images.push($(this)); 
  });

  images[0].addClass('active');
  activeImage = 0;

  for (var i = 0; i < numberOfBlinds; i++) {
    var tempEl = $(document.createElement('span'));
    var borders = calculateBorders();

    tempEl.css({
      'left': i * blindWidth,
      border: margin + 'px solid ' + color,
      borderTop: borders.borderWidthTop + 'px solid ' + color,
      borderBottom: borders.borderWidthBottom + 'px solid ' + color,
      'height': height,
      'width': blindWidth
    });
        
    container.prepend(tempEl);
  };

  blinds = $('span', container);
  setTimeout(animateBorders, 1000);
});

function calculateBorders() {
  var random = Math.floor((Math.random()*9)+1);
  var borderWidthTop = (random / 10) * gapHeight;
  var borderWidthBottom = gapHeight - borderWidthTop;

  return {borderWidthTop: borderWidthTop, borderWidthBottom: borderWidthBottom};
}

function animateBorders() {
  var changeOccuredOnce = false;

  blinds.animate({
    borderTopWidth: height / 2,
    borderBottomWidth: height / 2
  }, 1000, function() {
    if(!changeOccuredOnce) {
      images[activeImage].removeClass('active');
      activeImage = (activeImage + 1) % images.length;
      images[activeImage].addClass('active');
      setTimeout(animateBorders, 3000);
      changeOccuredOnce = true;
    }

    var borders = calculateBorders();

    $(this).delay(300).animate({
      borderTopWidth: borders.borderWidthTop,
      borderBottomWidth: borders.borderWidthBottom
    }, 1000);
  });
}

External CSS

This Pen doesn't use any external CSS resources.

External JavaScript

  1. //cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js