Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JQuery滑块的问题_Jquery_Css - Fatal编程技术网

JQuery滑块的问题

JQuery滑块的问题,jquery,css,Jquery,Css,我已经使用Jquery制作了一个滑块,它可以正常工作,但是当它到达最后一张幻灯片时,它不会滑到第一张,而是会立即显示第一张幻灯片。而且它不会停留在最后一张幻灯片上,哪怕是一秒钟 HTML: JQuery: $('document').ready(function () { var width = 750; var animationSpeed = 1000; var pause = 3000; var currentSlide = 1; var $sl

我已经使用Jquery制作了一个滑块,它可以正常工作,但是当它到达最后一张幻灯片时,它不会滑到第一张,而是会立即显示第一张幻灯片。而且它不会停留在最后一张幻灯片上,哪怕是一秒钟

HTML:

JQuery:

$('document').ready(function () {
    var width = 750;
    var animationSpeed = 1000;
    var pause = 3000;
    var currentSlide = 1;

    var $slider = $('.slider');
    var $slideContainer = $slider.find('ul');
    var $slides = $slideContainer.find('li');

    setInterval(function () {
        $slideContainer.animate({
            'margin-left': '-=' + width + 'px'
        }, animationSpeed, function () {
            currentSlide++;
            if (currentSlide === $slides.length) {
                currentSlide = 1;
                $slideContainer.css('margin-left', 0);
            }
        });
    }, pause);
});

尝试更改增加幻灯片的方式和时间,以及将其重置为1的时间。 在当前的js中,您增加到最后一张幻灯片,然后告诉它立即返回到一张

$('document').ready(function () {
    var width = 750;
    var animationSpeed = 1000;
    var pause = 3000;
    var currentSlide = 1;

    var $slider = $('.slider');
    var $slideContainer = $slider.find('ul');
    var $slides = $slideContainer.find('li');

    setInterval(function () {
    $slideContainer.animate({
        'margin-left': '-=' + width + 'px'
    }, animationSpeed, function () {
        if (currentSlide === $slides.length) {
            currentSlide = 1;
            $slideContainer.css('margin-left', 0);
        } else {
            currentSlide++; // move this down here
        }
    });
}, pause);
});

我不是Javascript专家,但我想我已经解决了你的问题

当您设置动画时,您将执行currentSlide++,并在执行检查之后(currentSlide==$slides),因此您将迭代您的currentSlide,并在您告诉他更改为第一个幻灯片之后。正如之前所说的那样,我会把它放在后面

对于您的不返回问题,是因为在if循环中的操作中,您忘记为slideContainer设置动画,所以它只是显示。

请检查代码。或低于代码

也许是你的解决方案

$('document').ready(function () {
var width = 750;
var animationSpeed = 1000;
var pause = 3000;
var currentSlide = 1;

var $slider = $('.slider');
var $slideContainer = $slider.find('ul');
var $slides = $slideContainer.find('li');

setInterval(function () {
    $slideContainer.animate({
        'margin-left': '-=' + width + 'px'
    }, animationSpeed, function () {
        currentSlide++;
        if (currentSlide === $slides.length) {
            currentSlide = 1;
            //$slideContainer.css('margin-left', 0);
            $slideContainer.animate({ 'margin-left': 0  


 }, pause ); 
                }
            });
        }, pause);
    });

我稍微修改了您的代码,在最后一个位置放置了第一个元素的副本,并稍微修改了您的代码

$('document').ready(function () {
    var width = 750;
    var animationSpeed = 1000;
    var pause = 3000;
    var currentSlide = 1;

    var $slider = $('.slider');
    var $slideContainer = $slider.find('ul');
    var $slides = $slideContainer.find('li');

    setInterval(function () {
        $slideContainer.animate({
            'margin-left': '-=' + width + 'px'
        }, animationSpeed, function () {
            currentSlide++;
            if (currentSlide >= $slides.length) {
                currentSlide = 1;
                $slideContainer.css('margin-left', 0);
            }
        });
    }, pause);
});
改变

if (currentSlide === $slides.length)
致:

例如:

更新:左侧图像边框出现问题

为了使所有这些都能正常工作,我修改了你的css(将UL的左边距设置为0px)


更新的JSFIDLE:

它应该像它那样自动滑动,还是需要单击功能?您希望幻灯片滑回第一张图片还是希望最后一张图片淡出,然后第一张图片再次淡出?没有更多的信息很难帮助你谢谢。但是有没有办法让滑块在最后一张图像上停留几秒钟(比如说2秒钟)。正如你们所看到的,当它到达最后一张图片时,它会立即滑回第一张图片。我已经尝试了delay()函数,但它扰乱了第一张幻灯片的动画计时。@DineshS请检查此链接。对于第三张幻灯片,它停止3秒。哈哈。。。现在它在最后一张幻灯片上停止3秒。但从第二张幻灯片到第三张幻灯片的转换只需一秒钟。在从第二张幻灯片转到第三张幻灯片之前,它应该等待3秒钟。你看,delay()函数弄乱了setInterval()函数的计时(间隔)。@DineshS。这可能是适合您的正确解决方案。
$('document').ready(function () {
    var width = 750;
    var animationSpeed = 1000;
    var pause = 3000;
    var currentSlide = 1;

    var $slider = $('.slider');
    var $slideContainer = $slider.find('ul');
    var $slides = $slideContainer.find('li');

    setInterval(function () {
        $slideContainer.animate({
            'margin-left': '-=' + width + 'px'
        }, animationSpeed, function () {
            currentSlide++;
            if (currentSlide >= $slides.length) {
                currentSlide = 1;
                $slideContainer.css('margin-left', 0);
            }
        });
    }, pause);
});
if (currentSlide === $slides.length)
if (currentSlide >= $slides.length)
.slider ul {
    width:8000px;
    list-style-type:none;
    padding-left: 0px
 }