1. 程式人生 > >憤怒的WebAPI(六)——運動

憤怒的WebAPI(六)——運動

上聯:這個需求很簡單
下聯:怎麼實現我不管
橫批:明天上線

一、滑鼠座標獲取

1、橫座標:clientX
2、縱座標:clientY

	<script>
		// onmousemove - 當滑鼠移動會觸發事件
		document.onmousemove = function (e) {
			console.log(e.clientX, e.clientY);
		};
	</script>

二、offset系列屬性

1、offsetWidth:用於獲取元素的真實寬度,除了margin以外的寬
2、offsetHeight:用於獲取元素的真實高度,除了margin以外的高
3、offsetLeft:用於獲取元素到定位父盒子之間的左側距離,當前元素的邊框到定位父盒子的邊框之間的距離(邊框到邊框)。
4、offsetTop:用於獲取元素到定位父盒子之間的頂部距離,當前元素的邊框到定位父盒子的邊框之間的距離(邊框到邊框)。
5、offsetParent:獲取定位父盒子

模擬拖拽小案例

	<style>
		* {
			margin: 0;
			padding: 0;
		}
		#box {
			width: 100px;
			height: 100px;
			background-color: pink;
			position: absolute;
			left: 100px;
			top: 120px;
		}
	</style>
	
	<div id="box"></div>
	
	<script>
		var box = document.getElementById('box');
		// - 盒子預設不跟隨,點選盒子後,讓盒子以點選位置跟隨
		//   1 在點選盒子時,獲取滑鼠在盒子內的座標,計算方式:滑鼠座標 - 盒子的左側距離
		//   2 設定真正的拖拽效果:需要將點選分為點下和擡起兩種操作,mousedown - 滑鼠按鍵點下後觸發,mouseup - 滑鼠按鍵擡起後觸發
		// - 滑鼠按鍵點下時獲取滑鼠在盒子內的座標
		box.onmousedown = function (e) {
			var x = e.clientX - box.offsetLeft;
			var y = e.clientY - box.offsetTop;
			// - 滑鼠移動,設定跟隨
			document.onmousemove = function (e) {
				box.style.left = e.clientX - x + 'px';
				box.style.top = e.clientY - y + 'px';
			};
		};
		// - 滑鼠按鍵擡起,清除跟隨效果
		box.onmouseup = function () {
			// 清除跟隨效果
			document.onmousemove = null;
		};
	</script>

三、定時器

1、timeout

timeout定時器,延時定時器
1、引數1:時間到達後執行的操作,函式
引數2:延遲的時間,毫秒單位
返回值:返回當前定時器標識,用於進行清除操作。

var timer = null;
timer = setTimeout(function () {
	console.log('這是列印的內容');
}, 3000);

2、清除定時器的方式
引數:定時器的標識id

btn.onclick = function () {
	clearTimeout(timer);
};

2、interval

interval定時器 - 間隔定時器
1、設定方式:
引數1:間隔執行的操作程式碼,函式
引數2:間隔時間,毫秒單位

var timer = null;
timer = setInterval(function () {
	console.log('列印了內容');
}, 1000);

2、清除定時器

btn.onclick = function () {
	clearInterval(timer);
	// 特殊點:兩個定時器的清除方式可以互換使用,這個操作沒有意義,不推薦這樣使用。
	// clearTimeout(timer);
};

運動的案例請參考我寫的四個輪播圖
簡單輪播圖(1):https://blog.csdn.net/weixin_40589472/article/details/83957670
左右焦點輪播圖(2):https://blog.csdn.net/weixin_40589472/article/details/83962253
無縫滾動輪播圖(3):https://blog.csdn.net/weixin_40589472/article/details/83962613
完整輪播圖(4):https://blog.csdn.net/weixin_40589472/article/details/83988106