SOFTELメモ Developer's blog

会社概要 ブログ 調査依頼 採用情報 ...
技術者募集中

【JavaScript】動く雲っぽいものを表示する

問題

ブラウザで、流れていく雲のアニメーションみたいなのを表示したいです。

答え

領域の大きさ、背景色は、CSSかstyle属性で指定してやってください。IDはskyにした。

HTML

<div id="sky" style="width:100%; height:100px; background-color:#3E83C8;"></div>

cloud1.png と cloud2.png は適当なもこもこした半透明のPNG画像を用意してください。

JavaScript

$(function(){
	//中に入る雲を position:absolute するので
	$('#sky').css({position:"relative", overflow:"hidden"});

	//指定されたURLの画像の雲をskyの中に置く
	function addObject(url)
	{
		var speed = 30000 + Math.floor(Math.random() * 30000); 
		var top = -100 + Math.floor(Math.random() * 200); 
		var $div = $("<div>").css({"position":"absolute", "top":top,"left": "-200px"}).animate({
			left:$("#sky").width()
		},speed,"linear",function(){
			$(this).remove();
		})
		$div.append('<img src="' + url + '">');
		$("#sky").append($div);
	}

	//timer
	(function t() {
		if ($('#sky div').length > 100) {
			setTimeout(t, 500);
		} else {
			if (Math.random() < 0.20) {
				addObject("./cloud1.png");
			}
			if (Math.random() < 0.10) {
				addObject("./cloud2.png");
			}
			setTimeout(t, 100);
		}
	})();
});

関連するメモ

コメント