WAYAN SUSANDIARTA
3 Okt 2013

Images Slider Dengan jQuery



Images Slider Dengan jQuery - Bagaimana Cara Membuat menampilkan gambar dengan tampilan slider ditambah tombol Previous dan Next, nah itulah yang akan saya bahas kali ini, Images slider tidak jauh berbeda dengan Slideshow biasanya, namun perbedaan nya Slideshow secara otomatis bergantian dengan sendirinya sedangkan Images Slider ini harus manual jadi saat di klik tombol next maka akan menuju ke gambar berikutnya dan sebaliknya tombol Previous, cara membuat nya sangat mudah dan simlple karena menggunakan jQuery.



1. Login ke Blog kamu.
2. Pilih Rancangan Pilih EDIT HTML.
3. Copy semua kode ini dan letakan diatas kode </head>

<script src='https://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js' type='text/javascript'></script>
<script type='text/javascript'>
//<![CDATA[

//** Created: March 19th, 08'
//** Aug 16th, 08'- Updated to v 1.4:
 //1) Adds ability to set speed/duration of panel animation (in milliseconds)
 //2) Adds persistence support, so the last viewed panel is recalled when viewer returns within same browser session
 //3) Adds ability to specify whether panels should stop at the very last and first panel, or wrap around and start all over again
 //4) Adds option to specify two navigational image links positioned to the left and right of the Carousel Viewer to move the panels back and forth

//** Aug 27th, 08'- Nav buttons (if enabled) also repositions themselves now if window is resized

var stepcarousel={
 ajaxloadingmsg: '<div style="margin: 1em; font-weight: bold"><img src="ajaxloadr.gif" style="vertical-align: middle" /> Fetching Content. Please wait...</div>', //customize HTML to show while fetching Ajax content
 defaultbuttonsfade: 0.4, //Fade degree for disabled nav buttons (0=completely transparent, 1=completely opaque)
 configholder: {},

 getCSSValue:function(val){ //Returns either 0 (if val contains 'auto') or val as an integer
  return (val=="auto")? 0 : parseInt(val)
 },

 getremotepanels:function($, config){ //function to fetch external page containing the panel DIVs
  config.$belt.html(this.ajaxloadingmsg)
  $.ajax({
   url: config.contenttype[1], //path to external content
   async: true,
   error:function(ajaxrequest){
    config.$belt.html('Error fetching content.<br />Server Response: '+ajaxrequest.responseText)
   },
   success:function(content){
    config.$belt.html(content)
    config.$panels=config.$gallery.find('.'+config.panelclass)
    stepcarousel.alignpanels($, config)
   }
  })
 },

 getoffset:function(what, offsettype){
  return (what.offsetParent)? what[offsettype]+this.getoffset(what.offsetParent, offsettype) : what[offsettype]
 },

 getCookie:function(Name){ 
  var re=new RegExp(Name+"=[^;]+", "i"); //construct RE to search for target name/value pair
  if (document.cookie.match(re)) //if cookie found
   return document.cookie.match(re)[0].split("=")[1] //return its value
  return null
 },

 setCookie:function(name, value){
  document.cookie = name+"="+value
 },

 fadebuttons:function(config, currentpanel){
  config.$leftnavbutton.fadeTo('fast', currentpanel==0? this.defaultbuttonsfade : 1)
  config.$rightnavbutton.fadeTo('fast', currentpanel==config.lastvisiblepanel? this.defaultbuttonsfade : 1)
 },

 addnavbuttons:function(config, currentpanel){
  config.$leftnavbutton=$('<img src="'+config.defaultbuttons.leftnav[0]+'">').css({zIndex:50, position:'absolute', left:config.offsets.left+config.defaultbuttons.leftnav[1]+'px', top:config.offsets.top+config.defaultbuttons.leftnav[2]+'px', cursor:'hand', cursor:'pointer'}).attr({title:'Back '+config.defaultbuttons.moveby+' panels'}).appendTo('body')
  config.$rightnavbutton=$('<img src="'+config.defaultbuttons.rightnav[0]+'">').css({zIndex:50, position:'absolute', left:config.offsets.left+config.$gallery.get(0).offsetWidth+config.defaultbuttons.rightnav[1]+'px', top:config.offsets.top+config.defaultbuttons.rightnav[2]+'px', cursor:'hand', cursor:'pointer'}).attr({title:'Forward '+config.defaultbuttons.moveby+' panels'}).appendTo('body')
  config.$leftnavbutton.bind('click', function(){ //assign nav button event handlers
   stepcarousel.stepBy(config.galleryid, -config.defaultbuttons.moveby)
  })
  config.$rightnavbutton.bind('click', function(){ //assign nav button event handlers
   stepcarousel.stepBy(config.galleryid, config.defaultbuttons.moveby)
  })
  if (config.panelbehavior.wraparound==false){ //if carousel viewer should stop at first or last panel (instead of wrap back or forth)
   this.fadebuttons(config, currentpanel)
  }
 },

 alignpanels:function($, config){
  var paneloffset=0
  config.paneloffsets=[paneloffset] //array to store upper left offset of each panel (1st element=0)
  config.panelwidths=[] //array to store widths of each panel
  config.$panels.each(function(index){ //loop through panels
   var $currentpanel=$(this)
   $currentpanel.css({float: 'none', position: 'absolute', left: paneloffset+'px'}) //position panel
   $currentpanel.bind('click', function(e){return config.onpanelclick(e.target)}) //bind onpanelclick() to onclick event
   paneloffset+=stepcarousel.getCSSValue($currentpanel.css('marginRight')) + parseInt($currentpanel.get(0).offsetWidth || $currentpanel.css('width')) //calculate next panel offset
   config.paneloffsets.push(paneloffset) //remember this offset
   config.panelwidths.push(paneloffset-config.paneloffsets[config.paneloffsets.length-2]) //remember panel width
  })
  config.paneloffsets.pop() //delete last offset (redundant)
  var addpanelwidths=0
  var lastpanelindex=config.$panels.length-1
  config.lastvisiblepanel=lastpanelindex
  for (var i=config.$panels.length-1; i>=0; i--){
   addpanelwidths+=(i==lastpanelindex? config.panelwidths[lastpanelindex] : config.paneloffsets[i+1]-config.paneloffsets[i])
   if (config.gallerywidth>addpanelwidths){
    config.lastvisiblepanel=i //calculate index of panel that when in 1st position reveals the very last panel all at once based on gallery width
   }
  }
  config.$belt.css({width: paneloffset+'px'}) //Set Belt DIV to total panels' widths
  config.currentpanel=(config.panelbehavior.persist)? parseInt(this.getCookie(window[config.galleryid+"persist"])) : 0 //determine 1st panel to show by default
  config.currentpanel=(typeof config.currentpanel=="number" && config.currentpanel<config.$panels.length)? config.currentpanel : 0
  if (config.currentpanel!=0){
   var endpoint=config.paneloffsets[config.currentpanel]+(config.currentpanel==0? 0 : config.beltoffset)
   config.$belt.css({left: -endpoint+'px'})
  }
  if (config.defaultbuttons.enable==true){ //if enable default back/forth nav buttons
   this.addnavbuttons(config, config.currentpanel)
   $(window).bind("load, resize", function(){ //refresh position of nav buttons when page loads/resizes, in case offsets weren't available document.oncontentload
    config.offsets={left:stepcarousel.getoffset(config.$gallery.get(0), "offsetLeft"), top:stepcarousel.getoffset(config.$gallery.get(0), "offsetTop")}
    config.$leftnavbutton.css({left:config.offsets.left+config.defaultbuttons.leftnav[1]+'px', top:config.offsets.top+config.defaultbuttons.leftnav[2]+'px'})
    config.$rightnavbutton.css({left:config.offsets.left+config.$gallery.get(0).offsetWidth+config.defaultbuttons.rightnav[1]+'px', top:config.offsets.top+config.defaultbuttons.rightnav[2]+'px'})
   })
  }
  this.statusreport(config.galleryid)
  config.oninit()
  config.onslideaction(this)
 },

 stepTo:function(galleryid, pindex){ /*User entered pindex starts at 1 for intuitiveness. Internally pindex still starts at 0 */
  var config=stepcarousel.configholder[galleryid]
  if (typeof config=="undefined"){
   alert("There's an error with your set up of Carousel Viewer \""+galleryid+ "\"!")
   return
  }
  var pindex=Math.min(pindex-1, config.paneloffsets.length-1)
  var endpoint=config.paneloffsets[pindex]+(pindex==0? 0 : config.beltoffset)
  if (config.panelbehavior.wraparound==false && config.defaultbuttons.enable==true){ //if carousel viewer should stop at first or last panel (instead of wrap back or forth)
   this.fadebuttons(config, pindex)
  }
  config.$belt.animate({left: -endpoint+'px'}, config.panelbehavior.speed, function(){config.onslideaction(this)})
  config.currentpanel=pindex
  this.statusreport(galleryid)
 },

 stepBy:function(galleryid, steps){
  var config=stepcarousel.configholder[galleryid]
  if (typeof config=="undefined"){
   alert("There's an error with your set up of Carousel Viewer \""+galleryid+ "\"!")
   return
  }
  var direction=(steps>0)? 'forward' : 'back' //If "steps" is negative, that means backwards
  var pindex=config.currentpanel+steps //index of panel to stop at
  if (config.panelbehavior.wraparound==false){ //if carousel viewer should stop at first or last panel (instead of wrap back or forth)
   pindex=(direction=="back" && pindex<=0)? 0 : (direction=="forward")? Math.min(pindex, config.lastvisiblepanel) : pindex
   if (config.defaultbuttons.enable==true){ //if default nav buttons are enabled, fade them in and out depending on if at start or end of carousel
    stepcarousel.fadebuttons(config, pindex)
   } 
  }
  else{ //else, for normal stepBy behavior
  pindex=(pindex>config.paneloffsets.length-1 || pindex<0 && pindex-steps>0)? 0 : (pindex<0)? config.paneloffsets.length+steps : pindex //take into account end or starting panel and step direction
  }
  var endpoint=config.paneloffsets[pindex]+(pindex==0? 0 : config.beltoffset) //left distance for Belt DIV to travel to
  if (pindex==0 && direction=='forward' || config.currentpanel==0 && direction=='back' && config.panelbehavior.wraparound==true){ //decide whether to apply "push pull" effect
   config.$belt.animate({left: -config.paneloffsets[config.currentpanel]-(direction=='forward'? 100 : -30)+'px'}, 'normal', function(){
    config.$belt.animate({left: -endpoint+'px'}, config.panelbehavior.speed, function(){config.onslideaction(this)})
   })
  }
  else
   config.$belt.animate({left: -endpoint+'px'}, config.panelbehavior.speed, function(){config.onslideaction(this)})
  config.currentpanel=pindex
  this.statusreport(galleryid)
 },

 statusreport:function(galleryid){
  var config=stepcarousel.configholder[galleryid]
  var startpoint=config.currentpanel //index of first visible panel 
  var visiblewidth=0
  for (var endpoint=startpoint; endpoint<config.paneloffsets.length; endpoint++){ //index (endpoint) of last visible panel
   visiblewidth+=config.panelwidths[endpoint]
   if (visiblewidth>config.gallerywidth){
    break
   }
  }
  startpoint+=1 //format startpoint for user friendiness
  endpoint=(endpoint+1==startpoint)? startpoint : endpoint //If only one image visible on the screen and partially hidden, set endpoint to startpoint
  var valuearray=[startpoint, endpoint, config.panelwidths.length]
  for (var i=0; i<config.statusvars.length; i++){
   window[config.statusvars[i]]=valuearray[i] //Define variable (with user specified name) and set to one of the status values
   config.$statusobjs[i].text(valuearray[i]+" ") //Populate element on page with ID="user specified name" with one of the status values
  }
 },

 setup:function(config){
  //Disable Step Gallery scrollbars ASAP dynamically (enabled for sake of users with JS disabled)
  document.write('<style type="text/css">\n#'+config.galleryid+'{overflow: hidden;}\n</style>')
  jQuery(document).ready(function($){
   config.$gallery=$('#'+config.galleryid)
   config.gallerywidth=config.$gallery.width()
   config.offsets={left:stepcarousel.getoffset(config.$gallery.get(0), "offsetLeft"), top:stepcarousel.getoffset(config.$gallery.get(0), "offsetTop")}
   config.$belt=config.$gallery.find('.'+config.beltclass) //Find Belt DIV that contains all the panels
   config.$panels=config.$gallery.find('.'+config.panelclass) //Find Panel DIVs that each contain a slide
   config.onpanelclick=(typeof config.onpanelclick=="undefined")? function(target){} : config.onpanelclick //attach custom "onpanelclick" event handler
   config.onslideaction=(typeof config.onslide=="undefined")? function(){} : function(beltobj){$(beltobj).stop(); config.onslide()} //attach custom "onslide" event handler
   config.oninit=(typeof config.oninit=="undefined")? function(){} : config.oninit //attach custom "oninit" event handler
   config.beltoffset=stepcarousel.getCSSValue(config.$belt.css('marginLeft')) //Find length of Belt DIV's left margin
   config.statusvars=config.statusvars || []  //get variable names that will hold "start", "end", and "total" slides info
   config.$statusobjs=[$('#'+config.statusvars[0]), $('#'+config.statusvars[1]), $('#'+config.statusvars[2])]
   config.currentpanel=0
   stepcarousel.configholder[config.galleryid]=config //store config parameter as a variable
   if (config.contenttype[0]=="ajax" && typeof config.contenttype[1]!="undefined") //fetch ajax content?
    stepcarousel.getremotepanels($, config)
   else
    stepcarousel.alignpanels($, config) //align panels and initialize gallery
  }) //end document.ready
  jQuery(window).bind('unload', function(){ //clean up
   if (config.panelbehavior.persist){
    stepcarousel.setCookie(window[config.galleryid+"persist"], config.currentpanel)
   }
   jQuery.each(config, function(ai, oi){
    oi=null
   })
   config=null
  })
 }
}

//]]>
</script>
<style type='text/css'>
#myslides{
background:#2c3133;
}
.stepcarousel{
position: relative; /*leave this value alone*/
overflow: scroll; /*leave this value alone*/
width: 95%; /*Width of Carousel Viewer itself*/
height: 165px; /*Height should enough to fit largest content's height*/
margin: 0px 14px 5px 14px;
background:#2c3133;
}
.stepcarousel .belt{
position: absolute; /*leave this value alone*/
left: 0;
top: 0;
}
.stepcarousel .panel{
float: left; /*leave this value alone*/
overflow: hidden; /*clip content that go outside dimensions of holding panel DIV*/
margin: 10px 17px ; /*margin around each panel*/
width:220px; /*Width of each panel holding each content. If removed, widths should be individually defined on each content DIV then. */
background:#202325;
height:140px;
border:1px solid #393f42;
}
.stepcarousel .panel p{
text-align: left; /*leave this value alone*/
overflow: hidden; /*clip content that go outside dimensions of holding panel DIV*/
margin: 5px 5px ; /*margin around each panel*/
}
.stepcarousel .panel h2{
text-align: left; /*leave this value alone*/
height:20px;
overflow: hidden; /*clip content that go outside dimensions of holding panel DIV*/
margin: 2px 5px ; /*margin around each panel*/
font-size:16px;
font-weight:bold;
text-align:center;
font-family:Georgia,century gothic,Arial,verdana, sans-serif;
}
.stepcarousel .panel img{
float: left; /*leave this value alone*/
background:#040404; /*clip content that go outside dimensions of holding panel DIV*/
margin: 10px 10px 10px 10px; /*margin around each panel*/
padding:0px 0px;
}
</style>




4. Simpan Template.


Kembali kemenu awal Pilih Add Gadget dan copy semua kode dibawah ini.
<div id="myslides">
<script type="text/javascript">
stepcarousel.setup({
galleryid: 'mygallery', //id of carousel DIV
beltclass: 'belt', //class of inner "belt" DIV containing all the panel DIVs
panelclass: 'panel', //class of panel DIVs each holding content
panelbehavior: {speed:500, wraparound:true, persist:true},
defaultbuttons: {enable: true, moveby: 2, leftnav: ['https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhyAGitRruPREIqGmbi98xuD_jj9nKfbzjO3eNNp3rm3XLK11O8sBAwKdU-TrhBmY5xEArAJayifBFJUu3eug7oW413zBMORgiWfXkDEmBIRVj78BY1qpZqypqmwRlFhXoxQRc_ikjRR7Gm/', -14, 60], rightnav: ['https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhx32vsaPuTYd_eL_aTgT4X4qscmZTTo2EcWgK0NTPo1bgqLAbw_kW0B89dz6pEVtF53jBeyhrVsVRns81-nHCgZPDAH7RoLCuT6etmXVWsSxyHTCxOzvBlkurAlt24cad8uNq-sIEa7OVl/', 0, 60]},
statusvars: ['statusA', 'statusB', 'statusC'], //register 3 variables that contain current panel (start), current panel (last), and total panels
contenttype: ['external'] //content setting ['inline'] or ['external', 'path_to_external_file']
})
</script>
<div id="mygallery" class="stepcarousel">
<div class="belt">
<div class="panel">
<a href="#" title="NFS Most Wanted">
<img alt="NFS Most Wanted" width="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgaZRTRw3BlvgKvw0167nLPiq5r8sGz9x8E9R-XA_A4-WGS_mpdm29orzkRr44cbKGegF6OgbWipIc9xAQYfOWDygGRuQnnr8CvmU05VJgGYJxAofEP8z2bNvuVbQ1J3lIemn2tQQeHnWHX/+Most+Wanted.jpg" height="120"/>
</a>
</div>
<div class="panel">
<a href="#" title="Call Of Duty">
<img alt="Call Of Duty" width="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEht9Wu1qDOVRMYCQJ7fkFlAYNjhw-i3NzszrgXpZ-jSmYk38M25ZViwBEKwudqFxq3B76dkdPsQEQPklxFPAnySR2SocDLmzMFJHs6oSpob6K0a-D5jqrH7c2inrtOyPToEA4zcVtwZV-fz/+Of+Duty.jpg" height="120"/>
</a>
</div>
<div class="panel">
<a href="#" title="MaxPayne3 Game">
<img alt="MaxPayne3 Game" width="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEih2KrRnD8DeT2e_vNq4cad_dc2KqIsh-EUZXHGmzr9Ehr3d9gST80G6gPnjqAz2py0vqrFKxFhERNctl9BUxuYLGRc8qvywuH1glqOfYD57-GyczJyGBL__RlAwP6ElgpEYBFyQIqKpSZH/+game.gif" height="120"/>
</a>
</div>
<div class="panel">
<a href="#" title="Tomb Raider">
<img alt="Tomb Raider" width="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMxyBn2OzfExUaspFp6wd9buEZbI2yymUp9e_iuazQv86f2Ksu91CVTIQujVvHx_9LuIwjqyg13Hq-4CAjaitdy3NGJhyerLfAed8d89KQ12_0kZ7baBaXeF3xwleSKyJCSlXjaC2-zory/+Rider.jpg" height="120"/>
</a>
</div>
<div class="panel">
<a href="#" title="Harry Potter">
<img alt="Harry Potter" width="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgl1boRUdFGya7YG2ggfGrCqtiYna1RFW3vTPah7ESLpmaaSaSxGXTP_t0zZiREJJueWyx977BrAFSycOcw5JNFfUzAowg1gE3DHS4L99NzgTvWtMch07qRN8i8b03o1Ln2PFN2o97thol8/+potter.jpg" height="120"/>
</a>
</div>
<div class="panel">
<a href="#" title="NFS ProStreet">
<img alt="NFS ProStreet" width="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjajJ6JYqSk4BjiMXSSAa9RU53YDqeTMOxhxWhEhunnAVBqVkX1VA5gHFVBjO0hYZ7BQ-_j1itd10tOEeKcG8GJ_hX7dUutSf9nv2oeMypya-wvKCSu7LxlrVGMWABKUC8Asjz7RjrQsFq6/+ProStreet.jpg" height="120"/>
</a>
</div>
<div class="panel">
<a href="#" title="MaxPayne Movie">
<img alt="MaxPayne Movie" width="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjcyMgd7XleSdaRzqhX-VG2UBhAuWeTSEdp6oJWQVq2FnkUoyup6pN7GBZFAtXh9MAbOUsd2iYMHgBiNk7aFO4UYVfzE2as3pOmeM9GSVwFIhtP_7wclM3b997_Hx8YbxhpNsxJOg9fREK/+movie.jpg" height="120"/>
</a>
</div>
<div class="panel">
<a href="#" title="NFS Undercover">
<img alt="NFS Undercover" width="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg12utakmf77aYt1axpCgtl5IuA2bhO8t6Vto6lGUFrg-4ELuPGd89C6M4WDbyRNKx2ebpUK6TJfwxNtAU8txJaQmMC1dAOzAMoTqKH4CXZ2AQxRMg3jighce2HVIv5pOu6AXyHo4rZeyfY/+Undercover.jpg" height="120"/>
</a>
</div>
</div>
</div>
</div>
Ganti kode yang berwarna Merah dengan URL Gambar lainnya dan tanda # dengan URL yang dituju saat diklik gambar tersebut

Berkomentarlah :

1.Dengan kata-kata yang sopan
2.Tidak menaruh link aktif ataupun non aktif
3.No spam, no sara, and no porn
4.Tidak promosi blog
5.Komentar yang tidak sesuai dengan isi konten akan langsung saya hapus
6.Komentar yang bagus akan saya publish dan saya beri komentar balik