##【実装したいこと】
画像の幅がバラバラでも、それぞれの幅に合わせたwidthで各ループスライダーを動かしたいです。
JavaScriptで複数画像のループスライダーを実装したく、こちらのサイト[http://black-flag.net/jquery/20110707-3305.html]を参考に作りました。
しかし、実装したいループスライダーが1つではなく、1つのページに複数実装したいのですが、それぞれの画像のサイズが違うにも関わらず、一番下にあるループスライダーの幅で統一されてしまいます。
一番下のループスライダー以外は最後の画像が表示されなかったり、最後の画像から最初の画像に戻る時、間が空いてしまったりしてしまいます。
該当のソースコード
データベースに入っている4枚の画像を条件によって呼び出します。条件によってループスライダーを実装する数も変わります。
HTML
1<div class="loopslider"> 2 <ul> 3 <li><%= image_tag submit.image1.to_s, :height => 130 %></li> 4 <li><%= image_tag submit.image2.to_s, :height => 130 %></li> 5 <li><%= image_tag submit.image3.to_s, :height => 130 %></li> 6 <li><%= image_tag submit.image4.to_s, :height => 130 %></li> 7 </ul> 8</div>
なので、全てに適応できるようにeachやthisなどを使ったのですが、一番下のループスライダーのwidthが全てに適応されてしまいました。
JavaScript
1<script language="javascript" type="text/javascript"> 2 $(function(){ 3 $('.loopslider').each(function(){ 4 var loopsliderWidth = $(this).width(); 5 var loopsliderHeight = $(this).height(); 6 $(this).children('ul').wrapAll('<div class="loopslider_wrap"></div>'); 7 8 var loopWidth = 0; 9 $(this).find('ul li').each(function(){ 10 loopWidth += $(this).width() + 2; 11 }) 12 loopWidth += 1; 13 14 $('.loopslider_wrap').css({ 15 top: '0', 16 left: '0', 17 width: ((loopWidth) * 2), 18 height: (loopsliderHeight), 19 overflow: 'hidden', 20 position: 'absolute' 21 }); 22 23 $('.loopslider_wrap ul').css({ 24 width: (loopWidth) 25 }); 26 loopsliderPosition(); 27 28 function loopsliderPosition(){ 29 $('.loopslider_wrap').css({left:'0'}); 30 $('.loopslider_wrap').stop().animate({left:'-' + (loopWidth) + 'px'},25000,'linear'); 31 setTimeout(function(){ 32 loopsliderPosition(); 33 },25000); 34 }; 35 36 $(this).find('ul').clone().appendTo($(this).find('.loopslider_wrap')); 37 38 }); 39}); 40</script>
試したこと
参考にしたサイトを元に(this)に変えたり、それぞれに幅を適応させるため、idではなく、classにした。
補足情報(FW/ツールのバージョンなど)
プログラミングを始めて数ヶ月で、説明も下手な部分が多いかもしれませんが、何卒教えていただけると幸いです。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/12/26 18:52
2018/12/26 19:04
2018/12/27 03:34
2018/12/27 16:19
2018/12/28 04:45