Некоторые удивительные ответы, и здесь также пример, использующий animate
для изменения верха и непрозрачности: ( Демо )
smoke1.animate({
top: -500,
opacity: 0.5,
}, 7000, function(){
smoke1.css({'top':300,'opacity':1})
smoke1Animate();
});
Конечно, растягивая верх, чтобы помутнение исчезло из виду.
Отключение анимации в разное время, чтобы она постепенно появлялась:
smoke1Animate();
setTimeout(function(){ smoke2Animate(); },2000);
setTimeout(function(){smoke3Animate(); },4000);
А потом, конечно, позвать себя, когда они закончат.