通过.getBoundingClientRect()获取的DOMRect是实时的还是不可变的?
getBoundingClientRect() 返回的 DOMRect 是快照还是实时视图?
当通过以下代码获取DOMRect对象后:
let domRect = el.getBoundingClientRect();
若后续元素el的边界矩形因内容更新、页面滚动等原因发生变化,情况2成立:domRect对象反映的是调用getBoundingClientRect()时的原始边界,是一个不可变的快照。
具体说明:
- 调用
getBoundingClientRect()的瞬间,浏览器会同步计算元素当前的位置、尺寸等边界信息,并将这些值封装到返回的DOMRect对象中。 - DOMRect对象中的所有属性(如
top、left、width、height)都是静态数值,不会随元素后续的状态变化自动更新。 - 如果需要获取元素最新的边界信息,必须再次调用
el.getBoundingClientRect()方法。
内容的提问来源于stack exchange,提问作者Jo Liss
相关产品推荐
相关产品推荐

