元素偏移量offset系列
offset概述
offset翻译过来就是偏移量,我们使用offset系列相关属性可以动态的得到该元素的位置(偏移)、大小等。
-
获得元素距离带有定位父元素的位置
-
获得元素自身的大小(宽度高度)
-
注意:返回的数值都不带单位
offset系列常用属性:
element.offsetParent 返回作为该元素带有定位的父级元素 如果父级都没有定位则返回body
element.offsetTop 返回元素相对带有定位父元素上方的偏移
element.offsetLeft 返回元素相对带有定位父元素左边框的偏移
element.offsetWidth 返回自身包括padding、边框、内容区的宽度、返回数值不带单位
element.offsetHeight 返回自身包括padding、边框、内容区的高度、返回数字不带单位
offsetParent和parentNode的区别
console.log(son.offsetParent);
返回带有定位的父亲 否则返回的是body
console.log(son.parentNode);
返回父亲 是最近一级的父亲 亲爸爸 不管父亲有没有定位
<div class="father">
<div class="son"></div>
</div>
<div class="w"></div>
<script>
// offset 系列
var father = document.querySelector('.father');
var son = document.querySelector('.son');
// 1.可以得到元素的偏移 位置 返回的不带单位的数值
console.log(father.offsetTop);
console.log(father.offsetLeft);
// 它以带有定位的父亲为准 如果么有父亲或者父亲没有定位 则以 body 为准
console.log(son.offsetLeft);
var w = document.querySelector('.w');
// 2.可以得到元素的大小 宽度和高度 是包含padding + border + width
console.log(w.offsetWidth);
console.log(w.offsetHeight);
// 3. 返回带有定位的父亲 否则返回的是body
console.log(son.offsetParent); // 返回带有定位的父亲 否则返回的是body
console.log(son.parentNode); // 返回父亲 是最近一级的父亲 亲爸爸 不管父亲有没有定位
-
offset可以得到任意样式表中的样式值
-
offset系列获得的数值是没有单位的
-
offsetWidth包含padding+border+width
-
offsetWidth等属性是只读属性,只能获取不能赋值
-
所以,我们想要获取元素大小位置,用offset更合适
-
style只能得到行内样式表中的样式值
-
style.width获得的是带有单位的字符串
-
style.width获得不包含padding和border的值
-
style.width是可读写属性,可以获取也可以赋值
-
所以,我们想要给元素更改值,则需要用style改变
元素可视区client系列
client翻译过来就是客户端,我们使用client系列的相关属性来获取元素可视区的相关信息。通过client系列的相关属性可以动态的得到该元素的边框大小,元素大小
element.clientTop 返回元素上边框的大小
element.clientLeft 返回元素左边框的大小
element.clientWidth 返回自身包括padding、内容区的宽度,包含边框,返回数值不带单位
element.clientHeight 返回自身包括padding、内容区的高度,包含边框,返回数值不带单位
// client系列
// client 宽度 和我们offsetWidth 最大的区别就是 不包含边框
var div = document.querySelector('.box1');
console.log(div.clientWidth);
元素scroll系列
scroll翻译过来就是滚动的,我们使用scroll系列的相关属性可以动态的得到该元素的大小、滚动距离等。
element.scrollTop 返回被卷去的上侧距离,返回数值不带单位
element.scrollLeft 返回被卷去的左侧距离,返回数值不带单位
element.scrollWidth 返回自身实际的宽度,不含边框,返回数值不带单位
element.scrollHeight 返回自身实际的高度,不含边框,返回数值不带单位
如果浏览器的高(或宽)度不足以显示整个页面时,会自动出现滚动条。当滚动条向下滚动时,页面上面被隐藏掉的高度,我们就称为页面被卷去的头部。滚动条在滚动时会触发onscroll事件,页面被卷去的头部:可以通过window.pageYOffset获得,如果被卷去的左侧window.pageXOffset
三大系列总结
element.offsetWidth 返回自身包括padding,边框,内容区宽度,返回数值不带单位
element.clientWidth 返回自身包括padding,内容区宽度,不含边框,返回数值不带单位
element.scrollWidth 返回自身实际的宽度,不含边框,返回数值不带单位
1.offset系列常用于获得元素位置
2.client经常用于获取元素大小
3.scroll经常用于获取滚轮距离
// scroll 系列
var div = document.querySelector('.box2');
console.log(div.scrollHeight);
console.log(div.clientHeight);
// scroll滚动事件当我们滚动条发生变化会触发的事件
div.addEventListener('scroll', function () {
console.log(div.scrollTop);
})