🍈作者简介:大家好,我是亦世凡华、渴望知识储备自己的一名在校大学生
🍇个人主页:亦世凡华、的博客
🍓系列专栏:JavaScript专栏
🥝推荐一款模拟面试刷题神器🔥:点击跳转进入网站
目录
offset翻译过来就是偏移量的意思,我们使用offset系列相关属性可以动态的得到该元素的位置(偏移)、大小等。其作用是:获取元素距离带有定位父元素的位置、获取元素自身大小(宽度高度:返回的数值都不带单位)。
| offset系列属性 | 作用 |
|---|---|
| element.offsetParent | 返回作为该元素带有定位的父级元素,如果父级都没有定位则返回body |
| element.offsetTop | 返回元素相对带有定位父元素上方的偏移 |
| element.offsetLeft | 返回元素相对带有定位父元素左边框的偏移量 |
| element.offsetWidth | 返回自身包括padding、边框、内容区的宽度、返回数值不带单位 |
| element.offsetHeight | 返回自身包括padding、边框、内容区的高度、返回数值不带单位 |
获取元素位置
- html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <meta http-equiv="X-UA-Compatible" content="IE=edge">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <title>Documenttitle>
- <style>
- *{
- margin: 0;
- padding: 0;
- }
- .father{
- position: relative;
- width: 200px;
- height: 200px;
- background-color: #008c8c;
- margin: 100px;
- }
- .son{
- width: 100px;
- height: 100px;
- background-color: #000;
- margin-left: 50px;
- }
- style>
- head>
- <body>
- <div class="father">
- <div class="son">div>
- div>
- <script>
- // offset
- var father = document.querySelector('.father')
- var son = document.querySelector('.son')
- // 返回带有定位的父亲 否则就返回body
- console.log(son.offsetParent);
- // 得到元素偏移量 返回不带数值
- console.log(father.offsetTop);
- // 以带有定位的父亲为准,如果没有父亲或者父亲没有定位 则以body为准
- console.log(son.offsetLeft);
- script>
- body>
- html>

获取元素大小
- html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <meta http-equiv="X-UA-Compatible" content="IE=edge">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <title>Documenttitle>
- <style>
- .width{
- width: 200px;
- height: 200px;
- background-color: #008c8c;
- margin: 200px auto 0;
- padding: 20px;
- border: 15px solid #f00;
- }
- style>
- head>
- <body>
- <div class="width">div>
- <script>
- var w = document.querySelector('.width');
- // offset 得到的元素大小 宽度和高度是包含 padding + border + width
- console.log(w.offsetWidth);
- console.log(w.offsetHeight);
- script>
- body>
- html>

| offset | style |
|---|---|
| offset可以得到任意样式表中的样式值 | style只能得到行内样式表中的样式值 |
| offset系列获得的数值是没有单位的 | style.width获得的是带有单位的字符串 |
| offsetWidth包含padding+border+width | style.width获得不包含padding和border值 |
| offsetWidth等属性是只读属性,只能获取不能赋值 | style.width是可读可写属性,可以获取也可以赋值 |
| 要想获取元素大小位置,用offset更合适 | 要想给元素更改值,需要用style改变 |
- html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <meta http-equiv="X-UA-Compatible" content="IE=edge">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <title>Documenttitle>
- <style>
- .box{
- width: 200px;
- height: 200px;
- padding: 10px;
- background-color: #008c8c;
- }
- style>
- head>
- <body>
- <div class="box" style="width: 200px;">div>
- <script>
- var box = document.querySelector('.box');
- console.log(box.offsetWidth);
- console.log(box.style.width);
- script>
- body>
- html>

- html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <meta http-equiv="X-UA-Compatible" content="IE=edge">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <title>Documenttitle>
- <style>
- .box{
- width: 300px;
- height: 300px;
- background-color: #008c8c;
- margin: 100px auto 0;
- }
- style>
- head>
- <body>
- <div class="box">div>
- <script>
- var box = document.querySelector('.box');
- box.addEventListener('mousemove',function(e){
- // 我们在盒子内点击,想要得到鼠标距离盒子左右的距离。
- // 首先得到鼠标在页面中的坐标(e.pageX e.pageY)
- // 其次得到盒子在页面中的距离(box.offsetLeft box.offsetTop)
- // 用鼠标距离页面的坐标减去盒子在页面中的距离,得到 鼠标在盒子内的坐标
- // console.log(e.pageX);
- // console.log(e.pageY);
- // console.log(box.offsetLeft);
- var x = e.pageX - this.offsetLeft;
- var y = e.pageY - this.offsetTop
- this.innerHTML = 'x坐标是'+x+'y坐标是'+y;
- })
-
- script>
- body>
- html>

client翻译过来就是客户端的意思,我们使用client系列的相关属性来获取元素的可视区的相关信息。通过client系列的相关属性可以动态的得到该元素的边框大小,元素大小等。
| client系列属性 | 作用 |
|---|---|
| element.clientTop | 返回元素上边框的大小 |
| element.clientLeft | 返回元素左边框的大小 |
| element.clientWidth | 返回自身包括padding、内容区的宽度、不含边框,返回数值不带单位 |
| element.clientHeight | 返回自身包含padding、内容区的高度、不含边框,返回数值不带单位 |
- html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <meta http-equiv="X-UA-Compatible" content="IE=edge">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <title>Documenttitle>
- <style>
- div{
- width: 200px;
- height: 200px;
- background-color: #008c8c;
- border: 10px solid red;
- padding: 10px;
- }
- style>
- head>
- <body>
- <div>div>
- <script>
- // clientWidth 和 offsetWidth 最大区别就是不
- var div = document.querySelector('div')
- console.log(div.clientWidth);
- script>
- body>
- html>

scroll翻译过来就是滚动的,我们使用scroll的相关属性可以动态的得到该元素的大小、滚动距离等
如果浏览器的宽高不足以显示整个页面时,会自动出现滚动条,当滚动条向下滚动时,页面上面被隐藏的高度称为页面被卷去的头部。滚动条在滚动时会触发onscroll事件。
| scroll属性 | 作用 |
|---|---|
| element.scrollTop | 返回被卷去的上侧距离,返回数值不带单位 |
| element.scrollLeft | 返回被卷去的左侧距离,返回数值不带单位 |
| element.scrollWidth | 返回自身实际的宽度,不含边框,返回数值不带单位 |
| element.scrollHeight | 返回自身实际的高度,不含边框,返回数值不带单位 |
- html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <meta http-equiv="X-UA-Compatible" content="IE=edge">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <title>Documenttitle>
- <style>
- div{
- width: 200px;
- height: 200px;
- background-color: #008c8c;
- border: 10px solid red;
- padding: 10px;
- overflow: auto;
- }
- style>
- head>
- <body>
- <div>Lorem ipsum dolor sit amet consectetur adipisicing elit. Saepe maiores cumque delectus ullam nostrum expedita totam, accusantium, voluptatem quis tempore ipsam corrupti nobis. Iure, vero? Sequi, unde! Non, nam explicabo.div>
- <script>
- // clientWidth 和 offsetWidth 最大区别就是不
- var div = document.querySelector('div')
- console.log(div.scrollHeight);
- console.log(div.clientHeight);
- // scroll滚动事件,当我们滚动条发生变化会触发的事件
- div.addEventListener('scroll',function(){
- console.log(div.scrollTop);
- })
- script>
- body>
- html>

| 三大元素系列大小对比 | 作用 |
|---|---|
| element.offsetWidth | 返回自身包括padding、边框、内容区的宽度、返回数值不带单位 |
| element.clientWidth | 返回自身包括padding、不含边框、内容区的宽度、返回数值不带单位 |
| element.scrollWidth | 返回自身实际宽度,不含边框,返回数值不带单位 |
主要用法:
1.元素offset 经常用于获取元素位置 offsetLeft、offsetTop
2.元素client 经常用于获取元素大小 clientWidth、clientHeight
3.元素scroll 经常用于获取滚动距离 scrollTop、scrollLeft
页面的滚动距离通过 window.pageXOffset 获得
🍃JavaScript的学习还是要以多练习为主,想要练习JavaScript的朋友,推荐可以去牛客网看一看,链接:牛客网 里面的IT题库内容很丰富,属于国内做的很好的了,最重要的是里面的资源是免费的,是课程+刷题+面经+求职+讨论区分享,一站式求职学习网站,感兴趣的可以去看看。

呜呜~,原创不易。
