J’ai une série de divs flottant à l’infini dans une ligne horizontale. J’ai un div de largeur fixe contenant eux, débordement: caché. En fin de compte, j’aimerais appuyer sur les boutons divs / à gauche et à droite pour faire défiler les éléments (par rapport à l’utilisation de la barre de défilement).
J’ai du mal à faire travailler .animate (). Je veux que chaque clic déplace les éléments de la liste.
Il devrait fonctionner de manière similaire à la liste “Les clients qui ont acheté cet article ont également acheté” que vous pouvez faire défiler de la même manière. J’étais tenté d’essayer d’utiliser .mousedown et de le faire bouger tout en le maintenant (semblable au défilement réel), mais je voudrais d’abord faire cette approche plus facilement.
Voici le violon et le code:
http://jsfiddle.net/stfzy/16/
HTML:
CSS:
#container{ width:340px; height:50px; } #list-container { overflow:hidden; width: 300px; float:left; } .list{ background:grey; min-width:700px; float:left; } #arrowR{ background:yellow; width:20px; height:50px; float:right; cursor:pointer; } #arrowL{ background:yellow; width:20px; height:50px; float:left; cursor:pointer; } .item{ background:green; width:140px; height:40px; margin:5px; float:left; }
jQuery
$(document).ready(function() { $('div#arrowR').click(function(){ $('div.item').animate({'left':'-=300px'}); }); $('div#arrowR').click(function(){ $('div.item').animate({'left':'+=300px'}); }); });
Toute aide appréciée. Merci!
- Pourquoi fancybox nécessite-t-il l’activation en deux clics?
- L’écouteur jQuery n’écoute pas les événements sur les éléments DOM créés de manière dynamic
- Pourquoi mon événement click est-il appelé deux fois dans jQuery?
- Combinaison d’éléments pour le filtrage avec Isotope
- L’événement de clic Jquery Mobile ne fonctionne pas
Add position:relative
to .item
, comme ceci:
.item{ background:green; width:140px; height:40px; margin:5px; float:left; position:relative; /* Put me here! */ }
Exemple de travail: http://jsfiddle.net/mattblancarte/stfzy/21/
Il y a encore quelques bugs dans votre configuration, mais cela devrait vous décoiffer. 🙂
Modifier::
Voici une solution rapide pour résoudre le bug où la liste glisserait trop loin dans les deux sens:
$(document).ready(function() { var $item = $('div.item'), //Cache your DOM selector visible = 2, //Set the number of items that will be visible index = 0, //Starting index endIndex = ( $item.length / visible ) - 1; //End index (NOTE:: Requires visible to be a factor of $item.length... You can improve this by rounding...) $('div#arrowR').click(function(){ if(index < endIndex ){ index++; $item.animate({'left':'-=300px'}); } }); $('div#arrowL').click(function(){ if(index > 0){ index--; $item.animate({'left':'+=300px'}); } }); });
- Comment remplacer click avec touchstart sur les appareils iOS
- Comment jQuery peut-il être utilisé pour gérer la timer en clic, séparation de dblclick
- Jquery clic événement propagation
- Empêcher le clic de l’événement de clic du parent qui déclenche l’enfant
- Suivre un clic sur une animation flash (object / incorporer) avec jQuery
- jQuery: événement keyup pour appareil mobile
- Méthode .live () vs .on ()
- Enregistrement de jQuery click, premier et deuxième clic
- Jquery: détecte si le bouton droit ou le bouton droit de la souris est cliqué, le cas échéant, procédez comme suit:
- jquery click ne fonctionne pas sur l’hyperlien