前端:常用的获取元素位置与元素尺寸的属性与方法

属性/方法描述
clientWidth返回元素内容区的宽度(不包括滚动条、边框和外边距)。对于box-sizing: border-box的元素,包含内边距。
clientHeight返回元素内容区的高度(不包括滚动条、边框和外边距)。对于box-sizing: border-box的元素,包含内边距。
offsetWidth返回元素的总宽度,包括内边距和边框,但不包括外边距。
offsetHeight返回元素的总高度,包括内边距和边框,但不包括外边距。
scrollWidth返回元素的完整内容宽度,包括可能超出视口需要滚动才能看见的部分。
scrollHeight返回元素的完整内容高度,包括可能超出视口需要滚动才能看见的部分。
offsetLeft返回元素左边缘到其最近定位父元素左边缘的距离,包括元素的margin。
offsetTop返回元素顶部到其最近定位父元素顶部的距离,包括元素的margin。
getBoundingClientRect()返回一个对象,包含元素各边界相对于视口的位置(toprightbottomleft)以及元素的宽高(widthheight),考虑了滚动、变形和CSS转换的影响。
scrollTop返回元素自身的垂直滚动条位置。
scrollLeft返回元素自身的水平滚动条位置。
window.innerWidth返回浏览器视口内部的宽度,包括滚动条(但滚动条不计入宽度内)。
window.innerHeight返回浏览器视口内部的高度,包括滚动条(但滚动条不计入高度内)。
window.scrollY返回当前视口距离页面顶部的垂直滚动偏移量。等同于window.pageYOffset
window.scrollX返回当前视口距离页面左侧的水平滚动偏移量。等同于window.pageXOffset
window.screen.width返回浏览器窗口所在的整个屏幕的宽度。
window.screen.height返回浏览器窗口所在的整个屏幕的高度。
document.documentElement.clientWidth返回HTML文档元素在视口内的可视宽度,不包括滚动条。
document.documentElement.clientHeight返回HTML文档元素在视口内的可视高度,不包括滚动条

下面有一个简单的示例:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />

    <title>啦啦啦</title>
  </head>
  <body>
    <div id="example" class="hidden-scrollbar"></div>
  </body>
  <script>
    const getDomInfos = () => {
      var exampleDiv = document.getElementById("example");

      //元素的内容区域宽度和高度
      console.log("clientWidth:", exampleDiv.clientWidth);
      console.log("clientHeight:", exampleDiv.clientHeight);

      //元素的内边距区域宽度和高度
      console.log("offsetWidth:", exampleDiv.offsetWidth);
      console.log("offsetHeight:", exampleDiv.offsetHeight);

      //元素的滚动区域宽度和高度
      console.log("scrollWidth:", exampleDiv.scrollWidth);
      console.log("scrollHeight:", exampleDiv.scrollHeight);

      //元素与父元素的距离
      console.log("offsetLeft:", exampleDiv.offsetLeft);
      console.log("offsetTop:", exampleDiv.offsetTop);

      //元素的边界矩形,值为一个 DOMRect 对象,具体为bottom, height, left, right, top, width, x, y
      console.log(
        "getBoundingClientRect():",
        exampleDiv.getBoundingClientRect()
      );

      //元素的滚动距离
      console.log("scrollTop:", exampleDiv.scrollTop);
      console.log("scrollLeft:", exampleDiv.scrollLeft);

      //视口的宽度和高度
      console.log("window.innerWidth:", window.innerWidth);
      console.log("window.innerHeight:", window.innerHeight);

      //滚动条的滚动距离
      console.log("window.scrollY:", window.scrollY);
      console.log("window.scrollX:", window.scrollX);

      //屏幕的宽度和高度
      console.log("window.screen.width:", window.screen.width);
      console.log("window.screen.height:", window.screen.height);

      //文档的宽度和高度
      console.log(
        "document.documentElement.clientWidth:",
        document.documentElement.clientWidth
      );
      console.log(
        "document.documentElement.clientHeight:",
        document.documentElement.clientHeight
      );
    };

    window.addEventListener("DOMContentLoaded", getDomInfos);
  </script>
  <style>
    #example {
      position: relative; /* 设置为相对定位,方便观察offset属性 */
      width: 300px;
      height: 200px;
      padding: 20px;
      border: 5px solid black;
      box-sizing: border-box;
      overflow: auto;
      background-color: lightblue;
    }
    .hidden-scrollbar {
      /* 为了演示innerWidth和outerWidth的区别 */
      scrollbar-width: none; /* Firefox */
      -ms-overflow-style: none; /* Internet Explorer 10+ */
      overflow-x: hidden; /* 隐藏水平滚动条 */
    }
  </style>
</html>

  • 7
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值