Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.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 FadeIn和FadeOut图像的问题_Javascript_Jquery - Fatal编程技术网

Javascript FadeIn和FadeOut图像的问题

Javascript FadeIn和FadeOut图像的问题,javascript,jquery,Javascript,Jquery,我有一个淡入淡出的脚本,但是图像并没有很好地淡入淡出。 首先,第一个图像淡出,然后是下一个图像淡入。在褪色之间,你什么也看不见。我希望图像同时淡出和淡入 有人知道怎么修吗? 我想我必须编辑下面的一些行 for (var i = 0; i < slider.num; i++) { if(i == slider.cur || i == pos) continue; jQuery('#' + d[i].id).hide(); } if(slider.cur != -1){ j

我有一个淡入淡出的脚本,但是图像并没有很好地淡入淡出。 首先,第一个图像淡出,然后是下一个图像淡入。在褪色之间,你什么也看不见。我希望图像同时淡出和淡入

有人知道怎么修吗? 我想我必须编辑下面的一些行

for (var i = 0; i < slider.num; i++) {
   if(i == slider.cur || i == pos) continue;
   jQuery('#' + d[i].id).hide();
}

if(slider.cur != -1){
   jQuery('#' + d[slider.cur].id).stop(false,true);
   jQuery('#' + d[slider.cur].id).fadeOut(slider.fade_speed ,function(){
      jQuery('#' + d[pos].id).fadeIn(slider.fade_speed);
   });
}
else
{
   jQuery('#' + d[pos].id).fadeIn(slider.fade_speed);
}
for(变量i=0;i
如果希望fadeIn和fadeOut同时发生,则需要将fadeIn从成功回调中取出,并将其与fadeOut函数并行:

  if(slider.cur != -1){
    jQuery('#' + d[slider.cur].id).stop(false,true);
    jQuery('#' + d[slider.cur].id).fadeOut(slider.fade_speed);
    jQuery('#' + d[pos].id).fadeIn(slider.fade_speed);
  }

如果它们同时淡出,则应使用CSS将它们放置在相同的位置,以便它们显示在相同的位置:

div img {
    position: absolute; /* absolute positioning in the div */
    left: 0; /* position the images at the top left hand corner of the div */
    top: 0;
}

div {
    position: relative; /* relative positioning of the div itself */
}
然后,可以通过不使用成功回调同时设置两个图像的动画。回调仅在动画完成时运行

var imgs = $("div img"); // images

imgs.slice(1).hide(); // hide all except first
$("div").show(); // show the div (hide it initially because the images
                 // are loading which causes some flicker)

function fade(i) {
    imgs.eq(i).fadeOut(1000);    // fade out this one
    imgs.eq(i + 1).fadeIn(1000); // fade in next one immediately
}

var i = 0;
setInterval(function() {
    fade(i); // fade to the next image every 2 seconds
    i++;
}, 2000);