我试图让我的滑块循环到第一个图像,而不是通过其他图像返回第一个图像,而是在按下下一个箭头时将第一个 Li 标签添加到最后一个 Li 标签,以便它始终添加以前的 Li 将里面的图像标记到最后。也需要它在以前的工作上工作。
到目前为止,我已经走了多远:
html:
<div class="slider corners">
<ul>
<li class="corners"><span class="corners"></span><img src="../images/slider/image_1.png" width="854" height="393" alt="Image" /></li>
<li class="corners"><span class="corners"></span><img src="../images/slider/image_2.png" width="854" height="393" alt="Image" /></li>
<li class="corners"><span class="corners"></span><img src="../images/slider/image_3.png" width="854" height="393" alt="Image" /></li>
</ul>
</div>
<div id="slider-nav">
<button class="left_arrow" data-dir="prev"></button>
<button class="right_arrow" data-dir="next"></button>
</div>
查询:
$(function() {
var sliderUL = $('div.slider').css('overflow', 'hidden').children('ul'),
imgs = sliderUL.find('img'),
imgWidth = imgs[0].width,
imgsLen = imgs.length,
current = 1,
totalImgsWidth = imgsLen * imgWidth;
$('#slider-nav').show().find('button').on('click', function() {
var direction = $(this).attr('data-dir'),
loc = imgWidth;
if ( direction === 'next' ) {
$('.slider li').first().insertAfter( '.slider li:last');
}else if ( direction === 'prev' ) {
$('.slider li:last').insertAfter('.slider ul');
}
transition(sliderUL, loc, direction);
});
function transition( container, loc, direction ) {
var unit; // -= +=
if ( direction && loc !== 0 ) {
unit = ( direction === 'next' ) ? '-=' : '+=';
}
container.animate({
'margin-left': unit ? (unit + loc) : loc
});
}
});
我想知道这是否很明显,或者我是否完全错误地这样做了。