Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/431.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
Javascript JQuery图像滑块和CSS转换只工作一次_Javascript_Jquery_Css_Css Transitions_Css Transforms - Fatal编程技术网

Javascript JQuery图像滑块和CSS转换只工作一次

Javascript JQuery图像滑块和CSS转换只工作一次,javascript,jquery,css,css-transitions,css-transforms,Javascript,Jquery,Css,Css Transitions,Css Transforms,我正在尝试学习jQuery插件。我正在创建一个图像滑动插件。到目前为止,我就是这样发展起来的 (function($){ $.imageSlider = function(selector, settings) { //settings var config = { 'delay':2000, 'speed':500 }; if(settings)

我正在尝试学习jQuery插件。我正在创建一个图像滑动插件。到目前为止,我就是这样发展起来的

(function($){

        $.imageSlider = function(selector, settings) {

        //settings

        var config = {      
            'delay':2000,
            'speed':500
        };

        if(settings) {
            $.extend(config, settings);
        }

        //vars
        var obj = $(selector);

        obj.children('img').css('transition','width 2s, height 2s, transform 2s');      
        var image = obj.children('img');
        var count = image.length;

        var i = 0;

        image.eq(0).show(); //first image showing

        //begin the image loop

        setInterval ( function() {
                image.eq(i).fadeOut(config.speed);
                i = (i+1 == count) ? 0 : i+1;
                image.eq(i).fadeIn(config.speed);
                image.eq(i).css("transform","rotate(360deg)");
            }, config.delay
        );

        return this;
    }

})(jQuery);
但我的问题是,轮换周期只发生一次

JSFIDLE

在按照我想要的方式加载了所有3个图像之后,它不会应用转换

请帮我了解一下这里发生了什么。

Hie Shan

我可以重现你的问题,你是对的。第二次旋转图像后,图像将不再旋转。我正在使用Firefox25

为了解决您的问题,我进行了以下更新:

setInterval( function() {
        image.eq(i).fadeOut(config.speed);    
        image.eq(i).css("transform","rotate(0deg)");
        i = (i+1 == count) ? 0 : i+1;
        image.eq(i).fadeIn(config.speed);
        image.eq(i).css("transform","rotate(360deg)");
    }, config.delay
);
当循环结束时,元素在循环结束时保持相同的值,因此当您第一次运行它时,您的所有img元素都处于0度,在结束时,您将它们转换为360度位置。下次运行循环时,请解释第二次出现的问题,所有图像都从360度开始。如果将360度旋转到360度,则具有相同的位置,因为实际位置和新位置之间没有间隔。如果您将代码更新为45度,这将非常明显,如您在上所示

在开始这个过程之前,我定义了一个将元素返回到0度的转换。也许这个解决方案解决了你的问题

谢谢

Hie Shan

我可以重现你的问题,你是对的。第二次旋转图像后,图像将不再旋转。我正在使用Firefox25

为了解决您的问题,我进行了以下更新:

setInterval( function() {
        image.eq(i).fadeOut(config.speed);    
        image.eq(i).css("transform","rotate(0deg)");
        i = (i+1 == count) ? 0 : i+1;
        image.eq(i).fadeIn(config.speed);
        image.eq(i).css("transform","rotate(360deg)");
    }, config.delay
);
当循环结束时,元素在循环结束时保持相同的值,因此当您第一次运行它时,您的所有img元素都处于0度,在结束时,您将它们转换为360度位置。下次运行循环时,请解释第二次出现的问题,所有图像都从360度开始。如果将360度旋转到360度,则具有相同的位置,因为实际位置和新位置之间没有间隔。如果您将代码更新为45度,这将非常明显,如您在上所示

在开始这个过程之前,我定义了一个将元素返回到0度的转换。也许这个解决方案解决了你的问题


谢谢

在这里工作。看不出问题第二次后它就不转了它也在这里工作。唯一的补充我建议你是添加一个位置绝对的图像,以减少闪烁。。。幻灯片img{display:none;position:absolute;top:0px;left:0px}我想做的是旋转并逐个显示所有图像。第一次我想这样做。但在那之后,它只是滑动图像而不旋转。我是唯一一个看到这个的人。奇怪的可能是浏览器或操作系统的问题。这似乎对每个人都有效。您发送的小提琴会在三个横幅之间不断旋转,不会停止,也不会偏离。试试另一台电脑?那就让我们知道,如果你在这里工作对你不起作用。看不出问题第二次后它就不转了它也在这里工作。唯一的补充我建议你是添加一个位置绝对的图像,以减少闪烁。。。幻灯片img{display:none;position:absolute;top:0px;left:0px}我想做的是旋转并逐个显示所有图像。第一次我想这样做。但在那之后,它只是滑动图像而不旋转。我是唯一一个看到这个的人。奇怪的可能是浏览器或操作系统的问题。这似乎对每个人都有效。您发送的小提琴会在三个横幅之间不断旋转,不会停止,也不会偏离。试试另一台电脑?那就让我们知道,如果这对你不起作用的话,那就谢谢你@EliezerBernart!你帮了大忙。我很高兴有人看到了我所看到的。但它仍然不能与chrome一起使用。不客气@shan!正如您在上看到的,transform2d需要供应商前缀才能在Chrome和其他浏览器上工作,如果您想解决跨浏览器兼容性问题,请尝试一下。谢谢@EliezerBernart!你帮了大忙。我很高兴有人看到了我所看到的。但它仍然不能与chrome一起使用。不客气@shan!正如您在上看到的,transform2d需要供应商前缀才能在Chrome和其他浏览器上工作,如果您想解决跨浏览器兼容性问题,请尝试一下,也许会对您有所帮助。