2013-03-08 51 views
0

我的淡入淡出有一个小问题。基本上,当我褪色的第一个字母的第二个移动到左边的第一个字母的地方。有没有办法阻止它?如果是这样如何?jQuery在每个字母中淡入

$('.m').fadeIn(4000, function() { 
    $('.i').fadeIn(3000, function() { 
     $(this).fadeOut(2000, function() { 
      $('.full').fadeOut(3000); 
     });  
    }); 
    $(this).fadeOut(3000);  
}); 

jFiddle:http://jsfiddle.net/MRvfC/

+2

我相信'fade'依靠显示器,它不具有可视性那样的地方。尝试使用带'opacity'的'animate'。 – Leeish 2013-03-08 17:48:31

+0

查看http://www.greensock.com/get-started-js/以更好地控制像这样的动画 – Jack 2013-03-08 17:49:16

+0

或查看CSS转换。我更喜欢他们通过JS,并只有在IE中的问题,你可以使用jQuery后备如果需要的话。我通常只是坚持IE用户的一种低于标准的体验,希望他们切换浏览器。 – Leeish 2013-03-08 17:49:59

回答

2

使用display属性,而不是,你应该使用visibility。不幸的是,jQuery在显示/隐藏中使用display,所以你必须手动完成。

$('.m').css({'opacity':0,'visibility':'visible'}).animate({'opacity':1}, 4000, function() { 
    $('.i').css({'opacity':0,'visibility':'visible'}).animate({'opacity':1}, 3000, function() { 
     $(this).animate({'opacity':0}, 2000, function() { 
      $('.full').animate({'opacity':0}, 3000); 
     });  
    }); 
    $(this).animate({'opacity':0}, 3000); 
}); 

并在CSS中将display:none更改为visibility:hidden。同样值得通过将可见性设置回隐藏在最后来节省一些处理能力,尽管好的浏览器无论如何都不知道渲染具有0不透明度的东西。

+0

谢谢我会给这个去:) – 2013-03-08 17:54:15