2009-11-17 8 views
2

J'essaie d'écrire une petite page de test qui circule des images à travers une fenêtre (voir image). J'ai des boîtes colorées à l'intérieur d'une table (bordure grise), chaque boîte étant un élément.images coulissant en continu avec <table> et jQuery

<table id="boxes" style="border: 1px solid #666;"> 
    <tr> 
    <td><div class="box red"></div></td> 
    <td><div class="box green"></div></td> 
    <td><div class="box blue"></div></td> 
    <td><div class="box yellow"></div></td> 
    <td><div class="box pink"></div></td> 
    <td><div class="box lightblue"></div></td> 
    </tr> 
</table> 

L'effet que je vais pour est une boucle sans fin de droite à gauche, de sorte que lorsque le bord droit quitte le bord gauche de la fenêtre d'une boîte (ligne noire en gras), il est ensuite ajouté à la fin de la table pour continuer. Le appending est facile avec jQuery:

$('#boxes td:first').remove().appendTo('#boxes tr') 

J'essaie de comprendre 2 choses: 1. comment avoir un mouvement continu de droite à gauche sur la table 2. Comment (jQuery.animate?) pour surveiller constamment le bord droit de la boîte de tête, éventuellement avec

var tableEdge = $('#boxes').position().left; 
var boxEdge = $('#boxes td:first').position().left + $('#boxes td:first').width(); 

if (boxEdge < tableEdge) { 
    $('#boxes td:first').remove().appendTo('#boxes tr'); 
} 

merci.

boxes http://i34.tinypic.com/30dgztf.png

+2

je ne sais pas jQuery bien, mais +1 pour l'effort que vous mettez dans la question. –

Répondre

1

Je ne voudrais pas utiliser des tableaux, car il y a au moins un inconvénient de maire avec cette conception. Lorsque vous supprimez la cellule verte, toutes les autres cellules "sautent" vers la cellule gauche. Dans l'exemple, le bleu atterrirait là où était le vert. Cela devrait être compensé par votre moteur d'animation. Au lieu de cela, j'utiliserais de préférence divs ou tels avec le positionnement absolu. De cette façon, le déplacement d'une cellule n'affectera pas les autres cellules. Avec jQuery, je pense que vous pouvez animer l'attribut css "left", et le faire passer juste en dehors de la fenêtre. Attachez un rappel à cette animation et vous êtes prêt à tout déplacer vers l'arrière de la file d'attente.

+0

ouais, vous avez raison à propos de la cellule de table qui saute pour remplir un nouvel espace. Je vais y aller avec divs - n'importe quel css aide-t-il à les positionner comme l'image? – sa125

+0

Avoir un conteneur div (la fenêtre) avec la position: relative appliquée, puis utiliser la position: absolute sur chaque case et modifier la propriété left avec JS: $ (..). Css ('left', '50px ') (N'OUBLIEZ PAS le "px"). En appliquant la position: relative, les boîtes se positionneront par rapport à ceci même si elles sont "absolues". Bonne chance! – Znarkus

Questions connexes