Simple Automatic Image Rotator Plugin with jQuery

Simple Automatic Image Rotator Plugin with jQuery
File Size: 3.42 KB
Views Total:
Last Update:
Publish Date:
Official Website: Go to website
License: MIT
   

A simple, lightweight jQuery image rotator/gallery plugin that features auto-rotation and vertical thumbnail navigation bar.

How to use it:

1. Create an image rotator following the Html structure like so:

<div id="image-rotator">
  <ul class="tabs">
    <li>Thumb 1</li>
    <li>Thumb 2</li>
    <li>Thumb 3</li>
    <li>Thumb 4</li>
    <li>Thumb 5</li>
  </ul>
  <div class="container"> 
    <img src="1.jpg"> 
  </div>
  <div class="container"> 
    <img src="2.jpg"> 
  </div>
  <div class="container"> 
    <img src="3.jpg"> 
  </div>
  <div class="container"> 
    <img src="4.jpg"> 
  </div>
  <div class="container"> 
    <img src="5.jpg"> 
  </div>
</div>

2. The core CSS styles for the image rotator.

#image-rotator {
  width: 518px;
  padding: 18px 120px 10px 21px;
  position: relative;
  height: 434px;
  background: #fff;
  margin-bottom: 35px;
  margin: 35px auto;
}

#image-rotator ul.tabs {
  position: absolute;
  top: 18px;
  left: 538px;
  padding: 0;
  margin: 0;
}

#image-rotator ul.tabs li {
  font-size: 10px;
  color: #666;
  line-height: 10px;
  height: 75px;
  color: #333;
  overflow: hidden;
  width: 96px;
  background: #fff;
  margin-bottom: 11px;
  position: relative;
}

#image-rotator ul.tabs li a.title {
  position: absolute;
  z-index: 5;
  color: #fff;
  font-family: arial;
  bottom: 7px;
  width: 96px;
  text-align: center;
  text-shadow: 1px -1px 0 #000;
  text-decoration: none;
}

#image-rotator ul.tabs li img {
  width: 96px;
  height: 75px;
  opacity: 0.5;
  z-index: 3;
}

#image-rotator ul.tabs li.current img,
#image-rotator ul.tabs li img:hover { opacity: 1.0; }

#image-rotator div.container img {
  height: 420px;
  width: 500px;
  position: absolute;
}

#image-rotator div.container {
  position: relative;
  z-index: 0;
}

#image-rotator div.container.previous { z-index: 1; }

#image-rotator div.container.current { z-index: 2; }

#image-rotator h2 {
  font-size: 40px;
  font-family: Arial;
  color: #fff;
  padding: 5px 5px 5px 12px;
  margin: 0;
  overflow: hidden;
  line-height: 65px;
  text-transform: uppercase;
  height: 50px;
  overflow: hidden;
  position: absolute;
  top: 350px;
  text-shadow: 1px -1px 0 #000;
  text-align: center;
  letter-spacing: -1px;
  width: 475px;
}

3. Load the latest version of jQuery library at the bottom of the web page.

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>

4. The jQuery script to enable the image rotator.

$(document).ready(function(){ 
  $('.container').each(function(e){
    if(e == 0){
      $(this).addClass('current');
    }
     $(this).attr('id', 'handle' + e);
  })
  
  $('.tabs li').each(function(e){
    if(e == 0){
      $(this).addClass('current'); //adds class current to 1st li
    }
    $(this).wrapInner('<a class="title"></a>'); //wraps list items in anchor tag      
    $(this).append('<a><img /></a>'); //creates img tag   
    $(this).children('a').attr('href', '#handle' + e);//adds href to the anchors  
    y = $('#handle' + e + ' img').attr('src'); //grabs src from large pix
    $(this).find('img').attr('src', y); //appends src to small pix
    t = $(this).children('a').text(); 
    $('#handle' + e).append('<h2>' + t + '</h2>'); //adds h2 and text to big images 
    
  })
  
  $('.tabs li a').click(function(){
    c = $(this).attr('href');     
    if($(c).hasClass('current')){
      return false;
    }else{
      showImage($(c), 20);
      $('.tabs li').removeClass('current');
      $(this).parent().addClass('current');
      return false;
    }     
  })
  
  runRotateImages();
  
  $("#image-rotator").hover(
    function(){         
      clearTimeout(xx);
    }, 
    function(){         
      runRotateImages();
    }
  )
    
  
  
})

function showImage(img, duration){     

  $('.container').removeClass('current').css({
      "opacity" : 0.0, 
      "zIndex" : 2
      });
  img.animate({opacity:1.0}, duration, function(){    
    $(this).addClass('current').css({zIndex:1});
  });  
  
}
function rotateImages(){
  
  var curPhoto = $("div.current");
  var nxtPhoto = curPhoto.next();   
  var curTab = $(".tabs li.current");
  var nxtTab = curTab.next();       
  
  if (nxtPhoto.length == 0) {
    nxtPhoto = $('#image-rotator div:first'); 
    nxtTab = $('.tabs li:first-child');     
  }         
   
  curTab.removeClass('current');
  nxtTab.addClass('current');
  showImage(nxtPhoto, 300);

}
function runRotateImages(){

  xx = setInterval("rotateImages()", 4000);
  
}

This awesome jQuery plugin is developed by fearlessflyer. For more Advanced Usages, please check the demo page or visit the official website.