通過一個實例理解 offsetLeft,offsetTop; offsetWidth , offsetHeight


obj.offsetTop 指 obj 相對於版面或由 offsetParent 屬性指定的父坐標的計算上側位置,整型

obj.offsetLeft 指 obj 相對於版面或由 offsetParent 屬性指定的父坐標的計算左側位置,整型

obj.offsetWidth 指 obj 控件自身的絕對寬度,不包括因 overflow 而未顯示的部分,也就是其實際占據的寬度,整型

obj.offsetHeight 指 obj 控件自身的絕對高度,不包括因 overflow 而未顯示的部分,也就是其實際占據的高度,整型

event.clientX(Y)分別是鼠標相對於瀏覽器內容窗口左邊和上邊的偏移像素數值

注意:這幾個量返回的都是數值,要是用的話另需要加上單位“px”。

為了更好地理解這幾個屬性的含義,通過一個代碼示例來看一下。

     

最后的效果如圖,可以利用鍵盤的上下左右控制紅色方塊在大盒子里移動,不出界。

<!doctype html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<style>	
	#wrap{
		width: 500px;
		height: 500px;
		background: #ccc;
		margin: 50px auto;
		position: relative;    
	}
	#box{width: 100px;
		height: 100px;
		background: red;
		position: absolute;
	}
	</style>
</head>
<body>
	<div id="wrap">
		<div id="box"></div>
	</div>
</body>
<script>
var timer1=null;
var wrap=document.getElementById('wrap');
var box=document.getElementById('box');
var m=0,n=0;
var a,b,c,d;
timer1=setInterval(function() {               
	if (a) {
		m=box.offsetLeft-10;
		if (m<=0) {
			m=0;
		};
		box.style.left=m+'px';      
	};
	if (b) {
		n=box.offsetTop-10;
		if (n<=0) {
			n=0;
		};
		box.style.top=n+'px';
	};
	if (c) {
		m=box.offsetLeft+10;
		if (m>=wrap.offsetWidth-box.offsetWidth) {
			m=wrap.offsetWidth-box.offsetWidth;
		};
		box.style.left=m+'px';
	};
	if (d) {
		n=box.offsetTop+10;
		if (n>=wrap.offsetHeight-box.offsetHeight) {
			n=wrap.offsetHeight-box.offsetHeight;
		};
		box.style.top=n+'px';
	};
},10)

document.onkeydown=function(e) {
	if (e.keyCode==37) {
		a=true;
	};
	if (e.keyCode==38) {
		b=true;
	};
	if (e.keyCode==39) {
		c=true;
	};
	if (e.keyCode==40) {
		d=true;
	};
};

document.onkeyup=function(e) {
	if (e.keyCode==37) {
		a=false;
	};
	if (e.keyCode==38) {
		b=false;
	};
	if (e.keyCode==39) {
		c=false;
	};
	if (e.keyCode==40) {
		d=false;
	};
};
</script>
</html>

 要注意為父級設置position:relative; 否則,box會默認body為父級,不受wrap限制。

box.offsetTop;box.offsetLeft: 指的是box相對於wrap偏移的距離。
box.offsetWidth;box.offsetHeight:指的是box的可視寬度和高度。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM