程式碼原創
<script src="http://code.jquery.com/jquery-1.11.3.min.js"></script> <script src="http://malsup.github.com/jquery.cycle2.js"></script> <style> .pditem{ width:200px; height:100%; border:thin solid green; float:left; margin-right:5px; } .pditem:last-child{ margin-right:0px; } </style> <div id="myslide" class="cycle-slideshow" data-cycle-fx="scrollHorz" data-cycle-timeout="2000" data-cycle-slides="> div" style="border:thin solid red; width:710px;"> <div style="height:190px; border:thin solid blue; padding:5px; margin:5px;"> <div class="pditem">111</div> <div class="pditem">111</div> <div class="pditem">111</div> </div> <div style="height:190px; border:thin solid blue; padding:5px; margin:5px;"> <div class="pditem">222</div> <div class="pditem">222</div> <div class="pditem">333</div> </div> <div style="height:190px; border:thin solid blue; padding:5px; margin:5px;"> <div class="pditem">333</div> <div class="pditem">333</div> <div class="pditem">333</div> </div> </div> <div> <a href=# id="prev">Prev</a> <a href=# id="next">Next</a> </div> <script> $('#prev').click(function () { var n = $('#myslide > div').size() - 1; // 程式會自動加一個同級元素,所以要減1才是真正的個數 var c = $('#myslide').data("cycle.opts").currSlide; // 用此方法取得的索引是正確的,不用減1 //alert(n + ', ' + c); if(c == 0){ $('#myslide').cycle(n-1); }else{ $('#myslide').cycle('prev'); } }); $('#next').click(function () { var n = $('#myslide > div').size() - 1; // 程式會自動加一個同級元素,所以要減1才是真正的個數 var c = $('#myslide').data("cycle.opts").currSlide; //alert(n + ', ' + c); if(n==(c+1)){ $('#myslide').cycle(0); }else{ $('#myslide').cycle('next'); } }); </script>
預設的 next 動作是依序往右滑動,即使到了最後一組也一樣是往右滑動,只是內容是第1組。但是這樣可能不容易得知已經到底了。
上面是改良後的程式碼。按下 next 往右滑動到最後 1 組的時候,會變成往左滑動到第1組。
後記:
prev 跟 next 按鈕一直無法改成自己想要的樣式,後來改使用 slick 。
其它參考
如果只有一個(組)的時候,取消前後控制項
jquery marquee
bxSlider
WOW Slider
slick
How to style prev/next arrows button? (slick)
Image generated from CSS content code (跟 Font Awesome 有關)
沒有留言:
張貼留言