Maison > Article > interface Web > Comment puis-je créer un curseur de boucle d'image infinie à l'aide de JavaScript/jQuery ?
Cet article traite des meilleures pratiques, telles que la lisibilité, la réutilisabilité du code et les bonnes pratiques de codage, pour créer un Infinity-Image-Loop- Slider pour un site Web utilisant JavaScript/jQuery. L'accent est mis sur la façon d'organiser les images pour créer l'illusion d'un curseur de boucle sans fin.
Une méthode simple pour créer un curseur d'image infini est la suivante : Supposons vous avez "n" images à faire glisser en boucle, la première image suivant la nième image et vice-versa. Créez un clone de la première et de la dernière images et procédez comme suit :
Quel que soit le nombre d'images, il vous suffit d'insérer deux éléments clonés à la plupart.
En supposant que toutes les images mesurent 100 px de large et sont affichées dans un conteneur avec débordement : caché, affichage : bloc en ligne et espace blanc : nowrap, le conteneur contenant les images peut être facilement aligné dans une rangée.
Pour n = 4, la structure DOM apparaîtrait comme suit :
offset(px) 0 100 200 300 400 500 images | 4c | 1 | 2 | 3 | 4 | 1c /* ^^ ^^ [ Clone of the last image ] [ Clone of the 1st image ] */
Initialement, le conteneur est positionné à gauche : -100px, permettant d'afficher la première image. Pour basculer entre les images, appliquez une animation JavaScript à la propriété CSS que vous avez initialement sélectionnée.
Le violon qui l'accompagne démontre cet effet. Vous trouverez ci-dessous le code JavaScript/jQuery de base utilisé :
$(function() { var gallery = $('#gallery ul'), items = gallery.find('li'), len = items.length, current = 1, /* the item we're currently looking */ first = items.filter(':first'), last = items.filter(':last'), triggers = $('button'); /* 1. Cloning first and last item */ first.before(last.clone(true)); last.after(first.clone(true)); /* 2. Set button handlers */ triggers.on('click', function() { var cycle, delta; if (gallery.is(':not(:animated)')) { cycle = false; delta = (this.id === "prev")? -1 : 1; /* in the example buttons have id "prev" or "next" */ gallery.animate({ left: "+=" + (-100 * delta) }, function() { current += delta; /** * we're cycling the slider when the the value of "current" * variable (after increment/decrement) is 0 or when it exceeds * the initial gallery length */ cycle = (current === 0 || current > len); if (cycle) { /* we switched from image 1 to 4-cloned or from image 4 to 1-cloned */ current = (current === 0)? len : 1; gallery.css({left: -100 * current }); } }); } }); });
Cette solution est relativement simple et efficace, ne nécessitant que deux opérations d'insertion DOM supplémentaires et une logique de gestion de boucle simple par rapport à une solution non -curseur de boucle.
Bien que des approches alternatives puissent exister, cette méthode fournit une solution pratique et efficace pour créer un curseur de boucle infinie.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!