2010-08-21 10 views
0

J'ai besoin de faire défiler 4 images sur mon site, je ne voulais pas ajouter un autre plugin au site, donc j'ai créé mon propre carrousel simple (html, css et js ci-dessous)Optimisation d'un simple carrousel d'images jQuery

Ma question est, juste à partir de ce code, y a-t-il une façon évidente/meilleure de le faire?

html:

<section id="carousel"> 
    <img src="images/image_00.jpg" width="202" height="162" /> 
</section> 

css:

#carousel{text-align:center;position:relative;} 
#carousel img{top:0;left:0;z-index:1;position:absolute;} 

js:

function carousel(el, base_url, images, i){ 
    if (i == images.length) i = 0; 
    var el2 = $(el).clone(); 
    $(el).css('z-index', '1'); 
    el2.css('z-index', '0'); 
    el2.attr('src', base_url + images[i]); 
    $(el).after(el2); 
    $(el).fadeOut('slow', function(){ 
     $(this).remove(); 
    }); 
    i++; 
    var func = function(){return carousel(el, base_url, images, i);}; 
    window.timer = setTimeout(func, 4000); 
} 
$(document).ready(function(){ 
    carousel('#carousel img:first', 
      'images/', 
      ['image_00.jpg', 
       'image_01.jpg', 
       'image_02.jpg', 
       'image_03.jpg'], 
      0); 
}); 
+0

Pourquoi ne pas utiliser les CSS pour votre largeur de l'image et de la hauteur? –

+0

c'est juste un copier coller. non pertinent – Tombigel

Répondre

0

Voici ma version optimisée ...

HTML

<!-- "section" is not valid HTML --> 
<div id="carousel"> 
     <img src="images/01.jpg" width="202" height="162" /> 
</div> 

CSS

/* Same as before */ 
#carousel{text-align:center;position:relative;} 
#carousel img{top:0;left:0;z-index:1;position:absolute;} 

Javascript

function carousel(el, base, images, i){ 
    //Made the "i" parameter optional 
    if (i == images.length || i == null) i = 0; 
    //Put the variables in a better order 
    var el2 = $(el).clone(); 
    el2.attr('src', base + images[i]); 
    el2.css('z-index', '0'); 
    $(el).css('z-index', '1'); 
    $(el).after(el2); 
    //One line... 
    $(el).fadeOut('slow', function(){$(this).remove();}); 
    i++; 
    //The function doesn't have to be in a variable 
    window.timer = setTimeout(function(){return carousel(el, base, images, i);}, 4000); 
} 

$(function($){ 
    //Didn't include "i" variable 
    carousel('#carousel img:first', 
      'images/', 
      ['01.jpg', 
       '02.jpg', 
       '03.jpg', 
       '04.jpg']); 
}); 
+0

Merci, mais en plus de supprimer le "i", vous n'avez rien optimisé. – Tombigel

+0

Eh bien, c'est le mieux que je peux faire, je pense que c'est aussi optimisé que possible –