js的element中,属性以scroll、client和offset为前缀的属性的区别

        下面提的Height和Width是基于W3C标准的。

        首先提的是clientHeight和clientWidth属性,这个属性返回的值是该属性作用的元素的高度+上下内边距-滚动条宽度或者宽度+左右内边距-滚动条宽度,不包括边框、外边距和滚动条。但是在ie5却不是这个结果。ie5的clientHeight和clientWidth等于该元素的高度减上下边框减滚动条宽度或者宽度减左右边框减滚动条宽度。clientWidth和clientHeight反映的是可视区的值,测试代码:

<!DOCTYPE html>
<html>
	<head>
		<title></title>
		<meta charset='utf-8'>
		<style type="text/css">
			#a{
			    position: absolute;
                width: 130px;
                height: 130px;
                background-color: red;
                overflow: auto;
                padding: 10px;
                margin: 10px;
                border: 3px solid black;
			}
		</style>
	</head>
	<body>
		<div id='a'>aaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaa 
                            aaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaa 
                            aaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaa 
                            aaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaa 
                            aaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaa 
                            aaaaaaaaaaaaaaaaaaaaaaaaa</div>
	</body>
	<script type="text/javascript">
		var a = document.getElementById('a')
		console.log(a.clientHeight)
		console.log(a.clientWidth)
	</script>
</html>

        然后是offsetHeight和offsetWidth。offsetHeight和offsetWidth的值等于该元素的高度+上下内边距+上下边框或者宽度+左右内边距+左右边框,也可以换过来想,offsetHeight和offsetWidth的值等于clientHeight+上下边框+滚动条宽度或者clientWidth+左右边框+滚动条宽度。而ie5则刚好等于width或者Height。

        然后是scrollHeight和scrollWidth。scrollWidth和scrollHeight返回的值是元素滚动的宽度和高度。在不同浏览器里,返回的值不同。这是因为在不同浏览器里默认的字体大小和行高等缺省样式不同。

        然后是scrollTop和scrollLeft。scrollTop和scrollLeft表示的是元素的最顶端与可视区的最顶端的距离或者最左端与可视区的最左端的距离。这里有多个最,那么先解释清楚这里面的关系。可视区就是你将滚动条滚动到某个位置的时候你能看到的区域就是可视区,可视区包含在整个元素内容里。

        offsetTop和offsetLeft,它们分别表示为获取元素相对于版面或者由offsetParent属性指定的计算顶部或者左侧的位置。

        事件里的clientX和clientY表示的是鼠标在可视区内的坐标。

        最后一幅图解决问题:


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JavaScriptoffsetscrollclient都是针对元素位置和大小的属性。 1. offset offset指的是一个元素相对于其定位父元素的位置。offset包含了元素的位置(left和top)和大小(width和height),以像素为单位。offset属性是只读的。 例如,假设有一个元素div,它的位置是相对于其父元素的,那么可以通过以下方式获取它的offset属性: ``` var div = document.getElementById("myDiv"); var offsetLeft = div.offsetLeft; var offsetTop = div.offsetTop; var offsetWidth = div.offsetWidth; var offsetHeight = div.offsetHeight; ``` 2. scroll scroll指的是一个元素的滚动位置。scroll包含了元素在水平和垂直方向上的滚动位置(scrollLeft和scrollTop),以像素为单位。scroll属性是可读写的。 例如,假设有一个元素div,它有滚动条,那么可以通过以下方式获取它的scroll属性: ``` var div = document.getElementById("myDiv"); var scrollLeft = div.scrollLeft; var scrollTop = div.scrollTop; ``` 3. client client指的是一个元素的可见区域大小。client包含了元素在水平和垂直方向上的可见区域大小(clientWidth和clientHeight),以像素为单位。client属性是只读的。 例如,假设有一个元素div,它有一些内容,但是只有一部分是可见的,那么可以通过以下方式获取它的client属性: ``` var div = document.getElementById("myDiv"); var clientWidth = div.clientWidth; var clientHeight = div.clientHeight; ``` 区别: 1. offset包含了元素的位置和大小,而client只包含了元素的可见区域大小。 2. scrollclient都只包含了元素在水平和垂直方向上的属性,而offset包含了元素相对于其定位父元素的属性。 3. offsetclient是只读的,而scroll是可读写的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值