getBoundingClientRect() 用于溢出容器的元素

getBoundingClientRect() for element overflowing the container

假设我们有一个文本溢出它的容器 div:

console.log(document.querySelector("p").getBoundingClientRect().width)
#myDiv {
  width: 20px;
  background-color: wheat;
  border: 1px solid #ddd;
}
<div id="myDiv">
  <p>foobarfoobarfoobarfoobarfoobar</p>
</div>

如您所见,容器 div 具有固定宽度 (20px),但即使文本明显大于该宽度 getBoundingClientRect() 也不会超过该容器值。

在这种情况下,是否有其他方法可以获取文本元素的边界矩形?

尝试在 p 元素上设置 display: inline-block;,使其具有特定宽度:

console.log(document.querySelector("p").getBoundingClientRect().width)
#myDiv {
  width: 20px;
  background-color: wheat;
  border: 1px solid #ddd;
}

p {
   display: inline-block;
}
<div id="myDiv">
 <p>foobarfoobarfoobarfoobarfoobar</p>
</div>