.offsetWidth 和 .offsetHeight

要获取元素占用的实际空间量,其中一种方法是使用 HTMLElement.offsetWidth 和 HTMLElement.offsetHeight 属性:

<!DOCTYPE html>
<html>
  <head>
  <title>文档的标题</title>
    <style>
      #divId {
        height: 200px;
        width: 350px;
        padding: 20px;
        margin: 25px;
        border: 2px solid green;
      }
    </style>
  </head>
  <body>
    <div id="divId">
      <p>获取元素的高度和宽度,包括填充和边框。</p>
      <p id="demo"></p>
    </div>
    <button onclick="GetHeightWidth()">Click on button</button>
    <script>
      function GetHeightWidth() {
        let elem = document.getElementById("divId");
        let width = "Width: " + elem.offsetHeight + "px<br>";
        let height = "Height: " + elem.offsetWidth + "px";
        document.getElementById("demo").innerHTML = width + height;
      }
    </script>
  </body>
</html>

.offsetWidth 和 .offsetHeight 是只读属性是只读的。
第一个以整数形式返回布局元素的宽度,第二个以整数形式返回元素的高度(包括垂直填充和边框)。

在这些属性的情况下,如果元素被隐藏(例如,通过将元素或者祖先之一上的 style.display 设置为“none”值),则返回 0。

.getBoundingClientRect()

.getBoundingClientRect() 函数在执行 CSS 转换后以浮点数形式返回元素的尺寸和位置:

<!DOCTYPE html>
<html>
  <head>
    <title>文档的标题</title>
    <style>
      #div1 {
        height: 200px;
        width: 300px;
        overflow: auto;
      }
      #myDiv {
        width: 250px;
        height: 150px;
        border: 1px solid red;
      }
      #div2 {
        width: 1000px;
        height: 1000px;
      }
    </style>
  </head>
  <body>
    <div id="div1">
      <div id="myDiv"> 使用滚动条更改位置。</div>
      <div id="div2"></div>
    </div>
    <br />
    <button onclick="GetPosition()">获取红色框的位置</button>
    <div id="demo"></div>
    <script type="text/javascript">
      function GetPosition() {
        let div = document.getElementById("myDiv");
        let rect = div.getBoundingClientRect();
        x = rect.left;
        y = rect.top;
        width = rect.right - rect.left;
        height = rect.bottom - rect.top;
        document.getElementById("demo").innerHTML = (" Left: " + x + " Top: " + y + " Width: " + width + " Height: " + height);
      }
    </script>
  </body>
</html>

大多数情况下 .offsetWidth 和 .offsetHeight 与 .getBoundingClientRect() 函数的宽度和高度相同,如果没有对元素应用任何变换。
如果存在转换,则属性返回元素的布局宽度和高度,而 getBoundingClientRect() 返回渲染宽度和高度。

.offsetWidth 和 .offsetHeight 属性将值四舍五入为整数。
如果你想要一个小数值,你应该使用元素 .getBoundingClientRect()。

如何检索 HTML 元素的实际宽度和高度

在本教程中,我们将推荐两种检索 HTML 元素实际宽度和高度的方法。

日期:2020-06-02 22:16:25 来源:oir作者:oir