Home > JQuery, Snippets > Membuat Animasi Image Rotator Dengan JQuery

Membuat Animasi Image Rotator Dengan JQuery

January 9th, 2010 Leave a comment Go to comments

Pertama-tama saya ucapkan Selamat Tahun Baru 2010, semoga kita dapat meraih hasil yang lebih baik dari tahun sebelumnya.

Artikel kali ini akan membahas tentang animasi image yang sering di gunakan pada setiap sisi halaman website, yaitu image rotator. Image rotator adalah cara menampilkan daftar image yang diganti satu per satu dalam suatu periode. Animasi ini biasanya di pasang pada space banner di dalam halaman website, agar pengunjung dapat melihat satu per satu secara bergantian produk yang di tawarkan pada banner tersebut.

Untuk membuat efek image rotator dengan JavaScript biasa tentu akan sulit, namun dengan bantuan jQuery anda tidak perlu menulis banyak kode, karena efek animasi seperti fadeIn (menampilkan perlahan-lahan) dan fadeOut (menyembunyikan perlahan-lahan) sudah disediakan oleh library jQuery standar.

Berikut adalah source code untuk melakukan image rotator dengan jQuery (masukan kode di bawah diantara tag HEAD).

4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
  <script type="text/javascript" src="../jquery.js"></script>
  <script type="text/javascript">
    // tentukan lokasi atau directory gambar-gambar yang akan di load
    var imageDirectory = './'; 
    /* tentukan gambar-gambar yang ingin di load dalam lokasi yang sudah di tentukan sebelumnya
    tidak ada batasan berapa banyak anda memasukan gambar */
    var imageList = ['slide1.jpg','slide2.jpg','slide3.jpg','slide4.jpg'];
 
    // flag yang digunakan untuk mendeteksi berapa banyak gambar yang sudah di load
    var imageHasLoad = 0;
 
    // flag yang digunakan untuk melakukan rotator berdasar urutan gambar
    var imagePosition = 0;
 
    /* pre-load image, agar gambar-gambar yang ingin ditampilkan sudah di load 
       sebelum halaman web di load secara keseluruhan */ 
    $(imageList).each( // looping isi array gambar
        function(){
            var Img = new Image(); // buat object gambar di javascript
            Img.src = imageDirectory+this // lokasi gambar di tentukan dari masing-masing nilai array yang sudah ditentukan sebelumnya
            $(Img).load( // membuat fungsi ketika gambar selesai di load
              function(){
                  imageHasLoad++; // setup flag berapa banyak gambar yang sudah di load
                  if(imageHasLoad == imageList.length) // jika semua gambar selesai di load
                      insertImages(); 
              }
            ); 	    
        }
    ); 
    // fungsi untuk memasukan HTML TAG gambar di dalam sebuah elemen DIV 
    function insertImages(){
        var imgStr = '';
        $(imageList).each( // looping isi array gambar
           function(){
        	  // gambar secara default di sembunyikan terlebih dahulu 
              imgStr += '<img src="'+imageDirectory+this+'" border="0" style="display:none" />'; 
           }
        );
        $('#divSlideShow').html(imgStr); // masukkan semua HTML TAG gambar ke dalam element dengan ID #divSlideShow
        rotateImages(); // lakukan animasi rotator
    } 	
    // fungsi untuk melakukan rotator 
    function rotateImages(){
        /* logika pada fungsi ini adalah sembuyikan image yang sudah tampil sebelumnya, lalu setelah selesai di sembunyikan
		   maka tampilkan image selanjutnya. Menyembunyikan dan menampilkan image dengan fungsi fadeOut dan fadeIn dari jQuery */
    	$($('#divSlideShow').find('img')[imagePosition > 0 ? imagePosition - 1 : imageList.length - 1]).fadeOut(
    	    'slow',
			function(){ // fungsi yang akan dijalankan setelah gambar sebelumnya selesai disembuyikan
				$($('#divSlideShow').find('img')[imagePosition]).fadeIn();
			}
    	);
    	// jika posisi rotator sudah sama dengan jumlah image yang di load sebelumnya, maka kembalikan ke posisi awal atau nol
		if(imagePosition == imageList.length - 1) 
			imagePosition = 0; 
    	else 
			imagePosition++; 
    	setTimeout('rotateImages()',2000); // lama rotasi per image adalah 2000 miliseconds atau 2 detik
    }
  </script>

Coba perhatikan pada source code diatas ada metoda untuk memanggil gambar secara pre-loading, tujuannya adalah agar gambar-gambar yang akan di load secara diam-diam di load satu per satu sebelum seluruh halaman web selesai di load, jadi pengunjung tidak perlu menunggu lama-lama untuk melihat image rotator anda.

Selama pengunjung menunggu tampilkan saja text “loading image…” atau gambar GIF yang menarik. Masukan kode di bawah diantara tag BODY.

65
66
<!-- tampilkan text "loading images" selama pengunjung menunggu hasil pre-load image -->
<div id="divSlideShow">loading images...</div>

Animasi ini dapat anda tempatkan di setiap sisi halaman website sesuai keinginan anda.

Berikut adalah demo dari keseluruhan source code: DEMO.

Download source code lengkap: DOWNLOAD.

Semoga bisa bermanfaat… ^_^

Categories: JQuery, Snippets Tags: , ,
  1. phpbego
    January 26th, 2010 at 09:54 | #1

    thanks ya mas, tutorialnya bagus

  2. January 31st, 2010 at 10:34 | #2

    keren mas.. ijin nyimak

  3. March 6th, 2010 at 03:02 | #3

    bagus mas,di padukan dengan wordpress mstinya bisa

  4. taufik
    May 1st, 2010 at 21:28 | #4

    mas kalo gambarnya ambil dari database sciptnya gimana..? thank

  5. May 26th, 2010 at 18:00 | #5

    mas ini kyknya lbih cocok kalo namanya image slide show :D
    nice post dah om

  6. May 27th, 2010 at 10:59 | #6

    mas aku mau bwt header pake ini jadi tinggal upload aja gambarnya pake cms buatan aku
    gmana buat database administratornya..
    thx

  7. June 4th, 2010 at 10:57 | #7

    @guzdix
    bisa aja sih pake judul slideshow tapi artikel ttg slideshow udah banyak :D

  8. June 4th, 2010 at 10:57 | #8

    @johan
    kan cuma buat table sederhana aja. id, nama_image dan lokasi_image.
    lalu nampilinnya di random

  9. June 4th, 2010 at 12:40 | #9

    @taufik
    di line 10 variable imageList kmu masukiin dari hasil load di php aja. php generate javascript

  10. wawan
    July 24th, 2010 at 01:01 | #10

    Wah..bagus banget mas,..sangat membantu,..Thanks.
    Btw,..klo image itu mo di kasih link gimana ya?

  11. July 26th, 2010 at 10:50 | #11

    @wawan
    bisa aja mas, siapkan 1 variable array yg menyimpan link utk setiap image. sisipkan setelah line-10.

    10
    11
    
    var imageList = ['slide1.jpg','slide2.jpg','slide3.jpg','slide4.jpg'];
    var imageLink = ['http://kemana.com','http://kesini.com','http://kesono.com','http://apalah.com'];

    lalu ketika looping html image kasih tambahan seperti ini.

    36
    37
    38
    39
    40
    41
    42
    43
    
    var link = 0;
    $(imageList).each( // looping isi array gambar
       function(){
    	  // gambar secara default di sembunyikan terlebih dahulu 
    	  imgStr += '<a href="'+imageLink[link]+'" rel="nofollow"><img src="'+imageDirectory+this+'" border="0" style="display:none" /></a>'; 
    	  link++;
       }
    );
  12. July 27th, 2010 at 13:57 | #12

    keren boz ini
    aku juga sudah buat diblogku.
    dilihat yaw..hehehe

  1. No trackbacks yet.