欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-05-24 10:33:00
...

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值  无滚动轴情况下---有则减去滚动轴

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

offset

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

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

  • 假如当前元素的父级元素中有CSS定位,offsetParent取最近的那个父级元素
    JS获取各种宽度高度的总结

			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

JS获取各种宽度高度的总结
下面两种方法易理解就没有贴效果图了,直接代码复制到编辑器里面测试就好了(测试得真知)

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;
}

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

相关标签: js javascript