获取元素的尺寸和偏移量

1. 获取元素尺寸

1-1. offset 一套

=> 语法:

-> 元素.offsetWidth

-> 元素.offsetHeight

=> 得到: 元素 内容 + padding + border 区域的尺寸

1-2. client 一套

=> 语法:

-> 元素.clientWidth

-> 元素.clientHeight

=> 得到: 元素 内容 + padding 区域的尺寸

2. 获取元素偏移量

2-1. 偏移量参考元素

=> 语法: 元素.offsetParent

=> 得到: 元素的定位父级

2-2. offset 一套

=> 语法:

-> 元素.offsetLeft

-> 元素.offsetTop

=> 得到: 元素相对于 offsetParent 元素的偏移量

2-3. client 一套

=> 语法:

-> 元素.clientLeft

-> 元素.clientTop

=> 得到: 元素 (内容+padding)区域 到 元素 border 左上角的偏移量, 其实就是左边框和上边框宽度

                                获取元素尺寸(占地面积)

语法第一套:

=> 元素.offsetWidth

-> 获取的是元素 内容 + padding + border 区域的宽度

=> 元素.offsetHeight

-> 获取的是元素 内容 + padding + border 区域的高度

=> 注意: 不管盒子模型是什么, 区域不变

语法第二套:

=> 元素.clientWidth

-> 获取的是元素 内容 + padding 区域的宽度

=> 元素.clientHeight

-> 获取的是元素 内容 + padding 区域的高度

=> 注意: 不管盒子模型是什么, 区域不变

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
  <style>
    * {
      margin: 0;
      padding: 0;
    }

    div {
      width: 200px;
      height: 200px;
      padding: 20px;
      border: 20px solid #333;
      margin: 50px;
      background-color: skyblue;
      background-clip: content-box;

      /* box-sizing: border-box; */
    }
  </style>
</head>
<body>

  <div></div>

  <script>
    

    var ele = document.querySelector('div')

    // 1. offset 一套
    console.log('offsetWidth : ', ele.offsetWidth)
    console.log('offsetHeight : ', ele.offsetHeight)

    // 2. client 一套
    console.log('clientWidth : ', ele.clientWidth)
    console.log('clientHeight : ', ele.clientHeight)
  </script>
</body>
</html>

效果图:

                                    获取元素偏移量

获取偏移量参考元素

+ 语法: 元素.offsetParent

+ 得到: 该元素的偏移量参考父级

-> 就是该元素的定位父级

-> 如果到 body 都没有定位父级, 那么这里的 offsetParent 就是 body 元素

语法第一套:

+ 语法:

=> 元素.offsetLeft

-> 获取元素相对于 offsetParent 的左侧距离

=> 元素.offsetTop

-> 获取元素相对于 offsetParent 的上方距离

语法第二套:

+ 语法:

=> 元素.clientLeft

-> 元素 (内容 + padding 区域) 相对于该元素 border 左边的尺寸

=> 元素.clientTop

-> 元素 (内容 + padding 区域) 相对于该元素 border 上边的尺寸

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
  <style>
    * {
      margin: 0;
      padding: 0;
    }

    div {
      width: 500px;
      height: 500px;
      margin: 50px;
      background-color: skyblue;
      overflow: hidden;

      position: relative;

    }

    p {
      width: 300px;
      height: 300px;
      margin: 50px;
      background-color: orange;
      overflow: hidden;

      position: relative;
    }

    span {
      width: 100px;
      height: 100px;
      display: block;
      margin: 50px;
      background-color: pink;

      padding: 20px;

      border: 20px solid #333;

      border-top-width: 50px;
      border-left-width: 70px;
    }
  </style>
</head>
<body>

  <div>
    <p>
      <span></span>
    </p>
  </div>

  <script>
    
    var spanEle = document.querySelector('span')

    // 1. 获取偏移量参考元素
    console.log('offsetParent : ', spanEle.offsetParent)

    // 2. 语法第一套
    console.log('offsetLeft : ', spanEle.offsetLeft)
    console.log('offsetTop : ', spanEle.offsetTop)

    // 3. 语法第二套
    console.log('clientLeft : ', spanEle.clientLeft)
    console.log('clientTop : ', spanEle.clientTop)
  </script>
</body>
</html>

效果图:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我是打工人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值