JS获取各种宽度高度的总结

client

clientHeight与clientWidth指的是元素的客户区大小,即 可见内容+padding
clientTop=boeder-top;clientLeft=border-left;(用来读取元素的border的宽度和高度的)

			#box{
				width: 100px;
				height: 100px;
				border: 4px solid #666666;
				background: greenyellow;
				padding: 10px;
				overflow: scroll;
			}
			var box=document.getElementById('box');
			var sh=box.clientHeight;//120px
			var sw=box.clientWidth;//120px
			var cTop=box.clientTop;
			box.style.marginTop=10+"px";
			console.log("clientTop:"+cTop);//4  用来读取元素的border的宽度和高度的
			console.log("clientHeight:"+sh,"clientWidth"+sw)
			//120=width(100)+padding(10)*2  不计算border值  无滚动轴情况下---有则减去滚动轴

在这里插入图片描述

offset

offsetHeight与offsetWidth是元素的外在大小,即border+padding+可见内容
offsetTop与offsetLeft,获得这两个值需要通过offsetParent

  • 如果当前元素的父元素没有进行CSS定位(position为absolute或relative),offsetParent为body

  • 假如当前元素的父级元素中有CSS定位,offsetParent取最近的那个父级元素
    在这里插入图片描述

			var oh=box.offsetHeight;
			var ow=box.offsetWidth;
			box.style.margin=10+"px";
			var oTop=box.offsetTop;
			console.log("offsetTop:"+oTop);//无定位 参照body
			console.log("offsetHeight:"+oh,"offsetWidth:"+ow);
			//128=width(100)+padding(10)+border(4)*2

scrll

scrllWidth与scrllHeight是元素的实际大小,即实际内容区+padding(大神说用的最多的!!)可读写
scrllTop与scrllLeft默认情况下是零有滚动条才有值

			var scw=box.scrollWidth;
			var sch=box.scrollHeight;
			box.style.margin=10+"px";
			var sstop=box.scrollTop;
			var ssleft=box.scrollLeft
			console.log("scrollTop:"+sstop,"scrollLeft:"+ssleft);
			console.log("scrollWidth:"+scw,"scrollHeight"+sch);
			//反映的是元素实际的大小,实际内容+padding

在这里插入图片描述
下面两种方法易理解就没有贴效果图了,直接代码复制到编辑器里面测试就好了(测试得真知)

window

console.log(“window内部的宽度:”+window.innerWidth);
console.log(“window内部的高度:”+window.innerHeight);
console.log(“window外部的宽度:”+window.outerWidth);
console.log(“window外部的高度:”+window.outerHeight);

Event

box.onmousemove = function (e) {
e=e||window.event;
//相对于浏览器的有效区域xy轴
box.innerHTML = “client:” + e.clientX + “,” + e.clientY;
//相对于显示器的屏幕距离的xy轴的距离
box.innerHTML = “screen:” + e.screenX + “,” + e.screenX;
//相对于页面的xy轴
box.innerHTML = “page:” + e.pageX + “,” + e.pageY;
//相对于事件源(元素)的xy轴的距离不加border值
box.innerHTML = “offset:” + e.offsetX + “,” + e.offsetY;
}

以上依照着自己的理解,和网上大神们的一些总结,外加自己实践出来的想!如果你看到了最后就在评论区喷一下吧。很多还是理解不到位的,希望各路大神纠正一下

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值