我正在研究一些使用 Element.getBoundingClientRect (gBCR)以及内联样式更新的代码来执行计算。这不适用于一般网站,对于是否有“更好的CSS方式”执行此任务,我不关心也不感兴趣。

JavaScript同步运行并执行以下步骤:

  • 提取 parent 的gBCR
  • 执行计算;
  • 父级的子元素具有内联CSS样式(例如,大小和边距)已更新
  • 再次获取父级的gBCR

  • 我是否保证在步骤4中计算出的客户端边界将反射(reflect)父对象的新边界矩形?

    如果没有规范的保证,那么Modern1浏览器实现是否“保证”了它?如果“基本有保证”,那有什么显着的异常(exception)?

    元素不会添加到DOM中或从DOM中删除,而被修改的元素是父节点的直接子代;如果此类限制/信息相关。

    1个“现代”版本:UIWebView(iOS 6 +),WebView(Android 2+)和常见的Chrome/WebKit,FF,IE9 +可疑-包括移动版本。

    最佳答案

    我只是对ios8.4.1/Safari8.0上的gBCR不可靠而感到困惑。

    在主体顶部准备一个大div(gBCR为0),然后滚动到底部(gBCR为负)。将div的大小调整为1x1,然后window.scrollY自动变为0。gBCR也应为0,但仍保持负值。使用setTimeout(200毫秒后),您可以确认正确的值0。

    09-25 15:14