Très Simple Image Slider/Slideshow avec les boutons gauche et droit. Pas de lecture automatique
Je suis en train de faire un très, très simple image slider/slideshow avec pas de lecture automatique s'il vous plaît. Je veux seulement aller à la suivante ou à la précédente image sur cliquez sur. Avoir quelques problèmes que vous pouvez lire ci-dessous.
Voici la jsFiddle http://jsfiddle.net/HsEne/12/ (j'ai juste utilisé les couleurs de fond à la place de l'image dans le violon ainsi que de commutation img divs mais c'est exactement le même problème, bien sûr)
Le HTML:
<div id="slider-wrapper">
<div id="slider">
<img class="sp" src="/img1.jpg">
<img class="sp" src="/img2.jpg">
<img class="sp" src="/img3.jpg">
<img class="sp" src="/img4.jpg">
<img class="sp" src="/img5.jpg">
<img class="sp" src="/img6.jpg">
</div>
<img id="button-previous" src="/button-arrow-left.jpg">
<img id="button-next" src="/button-arrow-right.jpg">
</div>
Le CSS:
#slider-wrapper {
display: block;
max-width: 790px;
margin: 5% auto;
max-height: 500px;
height: 100%; }
#slider {
display: block;
position: relative;
z-index: 99999;
max-width: 710px;
width: 100%;
margin: 0 auto; }
#button-previous {
position: relative;
left: 0;
margin-top: 40%;
width: 40px;
height: 60px; }
#button-next {
position: relative;
margin-top: 40%;
float: right; }
.sp {
position: absolute; }
#slider .sp {
max-width: 710px;
width: 100%;
max-height: 500px; }
jQuery pour le bouton suivant:
jQuery("document").ready(function(){
jQuery("#slider > img:gt(0)").hide();
jQuery("#button-next").click(function() {
jQuery("#slider > img:first")
.fadeOut(1000)
.next()
.fadeIn(1000)
.appendTo("#slider");
});
});
Ci-dessus jQuery fonctionne très bien, sauf qu'il saute la première image, si un utilisateur clique sur le bouton suivant sur la dernière diapositive. Il n'affiche que la première image, un temps, toutes les autres images ne périclitent à chaque fois suivant est cliqué. Pour une raison quelconque display: none est ajouté à la première image mais je ne sais pas où ce code est à venir.
jQuery pour le bouton précédent:
jQuery("document").ready(function(){
jQuery("#slider > img:gt(0)").hide();
jQuery("#button-previous").click(function() {
jQuery("#slider > img:last")
.fadeOut(1000)
.next()
.fadeIn(1000)
.appendTo("#slider");
});
});
Cette jquery code ci-dessus sera de retour le juste aperçu de l'image comme il se doit. Mais lorsque vous cliquez à nouveau, il ne fait rien.
J'ai aussi essayé .prev() en remplacement de .next(). Il fonctionne très bien la première fois que vous cliquez sur le bouton précédent. Dire que nous sommes de visualisation d'Images #4. Lorsque je clique sur le bouton précédent, il en va de l'Image #3, comme il se doit. Mais quand on clique sur nouveau, il ne va pas à l'Image #2, il remonte à l'Image #4 et #3 et #4, en répétant lui-même.
OriginalL'auteur bob | 2013-05-26
Vous devez vous connecter pour publier un commentaire.
Après la lecture de votre commentaire sur ma réponse précédente j'ai pensé que je pourrais mettre cela comme une réponse distincte.
Bien que j'apprécie votre approche d'essayer de le faire manuellement pour obtenir une meilleure compréhension sur jQuery je dois encore souligner le mérite en utilisant les cadres existants.
Cela dit, voici une solution. J'ai modifié certains de vos css et HTML et juste pour rendre les choses plus facile pour moi de travailler avec
TRAVAIL JS FIDDLE - http://jsfiddle.net/HsEne/15/
C'est le jQuery
Donc maintenant l'explication.
Stade 1
1) Chargez le script sur le document de prêt.
2) Saisir la première diapositive et ajouter une classe "active", donc nous savons que la diapositive qui nous occupe.
3) Masquer toutes les diapositives et de montrer de la diapositive active. Alors maintenant, faites glisser #1 est l'affichage à bloc et tout le reste sont des display:none;
Stade 2
De travail avec le bouton-ensuite, cliquez sur l'événement.
1) Supprimer l'actuelle classe active à partir de la diapositive qui sera en train de disparaître et de lui donner la classe oldActive si nous savons qu'il est sur son chemin.
2) Ensuite c'est une instruction if pour vérifier si nous sommes à la fin du diaporama et de la nécessité de revenir à la recommencer. Il vérifie si les oldActive (c'est à dire le sortant de la diapositive) est le dernier enfant. Si elle l'est, puis revenir en arrière pour le premier enfant et de le rendre "active". Si c'est pas le dernier enfant, puis il suffit de saisir l'élément suivant (à l'aide .next() ) et lui donner de la classe active.
3) Nous supprimons la classe oldActive parce qu'il n'est plus nécessaire.
4) fadeOut toutes les diapositives
5) fondu Dans l'actif de diapositives
Étape 3
Même que dans l'étape deux, mais à l'aide de certains d'inverser la logique pour voyager à travers les éléments en arrière.
Il est important de noter qu'il ya des milliers de façons que vous pouvez atteindre cet objectif. Ce n'est que mon point de vue sur la situation.
cela ne fonctionne pas bien.certaines images ne le montrent pas.
OriginalL'auteur James
Pourquoi chercher à réinventer la roue? Il y a de plus léger jQuery slideshow solutions là-bas, alors vous pourriez faire un bâton, et que quelqu'un a déjà fait le travail pour vous et de la pensée sur les problèmes que vous pourriez rencontrer (cross-browser de compatibilité etc).
jQuery Cycle est un de mes préférés de la lumière poids bibliothèques.
Ce que vous voulez faire peut être fait dans n'
JSFIDDLE POUR VOIR COMMENT IL EST FACILE
C'est compréhensible, j'ai ajouté une autre réponse pour vous de regarder par-dessus qui utilise jQuery.
OriginalL'auteur James
Code très simple à faire jquery slider
Voici deux div premier est le curseur de la visionneuse et le second est la liste des images contenant.
Il suffit de copier coller le code et le personnaliser à l'aide de css.
OriginalL'auteur Kaushal Sachan
OriginalL'auteur Kaushal Sachan