2012-01-10 11 views
1

私は自分のサイトのカルーセルを作成しようとしていて、スライドをリストの後ろに移動させるのに問題があるので、空白のない連続ストリームです。jQueryカルーセルが反復しない

<div class="maskleft"></div> 
<div class="maskright"></div> 

<div class="slideshow"> 
    <div class="views-row views-row-1 views-row-odd views-row-first"> 
     <div class="panel-text">text</div> 
     <div class="views-field views-field-field-image-feature"> 
      <img typeof="foaf:Image" src="" alt="" /> 
     </div> 
     <img typeof="foaf:Image" src="" alt="" /> 
    </div> 

    <div class="views-row views-row-2 views-row-even"> 
     <div class="panel-text">text</div> 
     <div class="views-field views-field-field-image-feature"> 
      <img typeof="foaf:Image" src="" alt="" /> 
     </div> 
     <img typeof="foaf:Image" src="" alt="" /> 
    </div> 

    <div class="views-row views-row-3 views-row-odd"> 
     <div class="panel-text">text</div> 
     <div class="views-field views-field-field-image-feature"> 
      <img typeof="foaf:Image" src="" alt="" /> 
     </div> 
     <img typeof="foaf:Image" src="" alt="" /> 
    </div> 

    <div class="views-row views-row-4 views-row-even views-row-last"> 
     <div class="panel-text">text</div> 
     <div class="views-field views-field-field-image-feature"> 
      <img typeof="foaf:Image" src="" alt="" /> 
     </div> 
     <img typeof="foaf:Image" src="" alt="" /> 
    </div> 
</div> 

jQueryのです:

function slideChange() { 
    var $slider = $('.slideshow'); 

    var $next = $slider.next().length ? $slider.next() : $('.slideshow'); 

    $next.animate({marginLeft: '-=1024'}, 1000, function() { 
    }); 
} 

$(document).ready(function() { 
    setInterval("slideChange()", 5000); 
}); 

ライブのdevのサイトはここにある:あなたが唯一のdiv whitch動いているhttp://dev.shoeboxdesign.co.uk/

答えて

0
  1. 、なぜあなたを行うここでは、コードですこのコードが必要です:

    var $next = $slider.next().length ? $slider.next() : $('.slideshow'); 
    
  2. あなたはスライドショーの最後に到達したときに、あなたのmarginLeftスタイルをリセットする必要があります。

    if (... check the end of slideshow ...) { // could be calculation of the widht, count of slides, etc. 
        $slider.css({marginLeft: '0'}); 
    } 
    
+0

私は彼が次のことを試みると思う:大文字は目に見えることを意味する。 | A b c | A→B c | a B c | a B→C | a b C | b C→A | A b c |等々。 あなたのソリューションは、素敵な移行なしに最初に戻るでしょう。 – buschtoens

+0

いいえ、私は彼が素敵なトランジションの前にスライダーを戻してアニメーションを実行する必要があることを意味します。私はアニメーションを置き換えるとは言わなかった。 – Samich

+0

はい、彼が再び戻ってきたら、ジャンプカットがあります。 CからAへの移行はありません。アニメーションなしでスライド全体をリセットするだけです。しかし、クリスは絶え間ないスライドの流れを求めていました。 – buschtoens

0

私はあなたが権利を取得した場合、あなたはあなたが持っているので、スライドショーの最後に最初のスライドを追加したいですストップ・カットの代わりに一定の流れを開始します。 これが正しいと仮定すると、重要なキーワード:の末尾にが追加されました。

最初のスライドを仮想的に撮り、最後のスライドに追加する必要があります。すべてのアニメーションステップでこれを行います。私たちはこのようなことに終わります。

function slideChange() { 
    var $slider = $('.slideshow'); 
    var $first = $slider.first(); 

    $slider.append($first); // Append a copy of the first slide to the last one 
    $slider.animate({marginLeft: '-=1024'}, 1000, function() { 
     $first.remove(); // Remove the first slide we just copied. So we virtually swapped the slide from the first to the last place 
     $slider.css({marginLeft: '+=1024'}); // Reset the margin 
    }); 

} 

このソリューションはテストされていませんが、このトリックを行う必要があります。 しかし、あなたのコードにはまだいくつかの問題があります。

このをこのスライダにのみ使用しますか?答えが「はい」の場合は、スライダーに#idを明示的に指定し、.classセレクターは指定しないでください。もう一度どこでも関数を使用するわけではないので、一般にアクセス可能な関数は必要ありません。あなたはそれを匿名で作ることができ、いくつかのリソースを節約できます。

​​
+0

こんにちは、私はメインのスライドをスライドさせ、非アクティブなビットを隠すような他の機能を追加したいと思います。 –

+0

これは間違いありませんか? 'function slideChange(){ var $ slider = $('。slideshow '); var $ first = $ slider.first(); $ slider.append($ first); //最初のスライドのコピーを最後のものに追加します $ slider.animate({marginLeft: ' - = 1024'}、1000、function(){ $ first.remove(); //最初のスライドを削除しますだから私たちは事実上最初のスライドから最後の場所にスライドを入れ替えました $ slider。css({marginLeft: '+ = 1024'}); //余白をリセットする }); } setInterval(function(){"slideChange()"}、5000);) ' –

+0

スライダーがこのように機能する場合は満足できますか? http://www.hybritalk.com/?page=info#slideshow(ロードに数秒かかります。画像はまだ圧縮されていません) – buschtoens