1. 程式人生 > >使用JS實現圖片的飄浮運動

使用JS實現圖片的飄浮運動

首先貼上準備飄浮的圖片鎮樓:PUBG

下面準備讓這張圖片在螢幕裡面進行飄浮運動,先貼上HTML和CSS程式碼和執行圖:

<html>

	<head>
		<meta charset="UTF-8">
		<title></title>
		<style type="text/css">
			/*懸浮框  */
			
			#float {
				position: absolute;
				z-index: 1;
			}
			/*圖片大小*/
			
			#floatImg {
				width: 250px;
				height: 150px;
			}
		</style>
	</head>

	<body>
		<div id="float"><img id="floatImg" alt="圖片未找到" src="img/pubg.jpg"></div>
	</body>
</html>

介紹一下我的思路,設定6個全域性變數,分別記錄圖片在X軸、Y軸上的移動距離、方向以及速度,接著進行圖片的位置改變方法,在方法中, 我們首先得到螢幕的大小和照片的大小,設定圖片的起始位置,接著進行位置的移動,移動過後再判斷圖片是否遇到四周牆壁,如果遇到,使其移動方向進行改變,並且移動距離根據其位置的不同設定其為0或者最大移動數(螢幕大小-圖片大小),最後設定一個定時器使其相隔50毫秒進行一次方法執行。這樣,飄浮的圖片效果就做出來了。

下面附上JS程式碼進行參考學習:

            //定義全域性變數
		var moveX = 0; //X軸方向上移動的距離
		var moveY = 0; //Y軸方向上移動的距離
		var stepX = 5; //圖片X軸移動的速度
		var stepY = 6; //圖片Y軸移動的速度
		var directionX = 0; //設定圖片在X軸方向上的移動方向   0:向右  1:向左
		var directionY = 0; //設定圖片在Y軸方向上的移動方向   0:向下  1:向上

		function changePos() {
			var img = document.getElementById("float"); //獲得圖片所在層的ID
			var height = document.documentElement.clientHeight; //瀏覽器的高度
			var width = document.documentElement.clientWidth; //瀏覽器的寬度
			var imgHeight = document.getElementById("floatImg").height; //飄浮圖片的高度
			var imgWidth = document.getElementById("floatImg").width; //瓢浮圖片的寬度
			//設定飄浮圖片距離瀏覽器左側位置
			img.style.left = parseInt(moveX + document.documentElement.scrollLeft) + "px";
			//設定飄浮圖片距離瀏覽器右側位置
			img.style.top = parseInt(moveY + document.documentElement.scrollTop) + "px";

			//設定圖片在Y軸上的移動規律
			if(directionY == 0) {
				//飄浮圖片在Y軸方向上向下移動
				moveY += stepY;
			} else {
				//飄浮圖片在Y軸方向上向上移動
				moveY -= stepY;
			}
			if(moveY < 0) {
				//如果飄浮圖片飄浮到頂端的時候,設定圖片在Y軸方向上向下移動
				directionY = 0;
				moveY = 0;
			}
			if(moveY > (height - imgHeight)) {
				//如果飄浮圖片飄浮到瀏覽器底端的時候,設定圖片在Y軸方向上向上移動
				directionY = 1;
				moveY = (height - imgHeight);
			}

			//設定圖片在X軸上的移動規律
			if(directionX == 0) {
				moveX += stepX;
			} else {
				moveX -= stepX;
			}
			if(moveX < 0) {
				//如果飄浮圖片飄浮到瀏覽器左側的時候,設定圖片在X軸方向上向右移動
				directionX = 0;
				moveX = 0;
			}
			if(moveX > (width - imgWidth)) {
				//如果飄浮圖片飄浮到瀏覽器右側的時候,設定圖片在X軸方向上向左移動
				directionX = 1;
				moveX = (width - imgWidth);
			}
		}
		setInterval("changePos()", 50);