【问题标题】:Does getting the offsetHeight of an element have a side effect?获取元素的 offsetHeight 有副作用吗?
【发布时间】:2015-09-13 16:40:58
【问题描述】:

在 Bootstrap 折叠的代码中,在 hide() 方法中,我看到以下行:

this.$element[dimension](this.$element[dimension]())[0].offsetHeight

我不明白最后.offsetHeight 的意义是什么,除非它有副作用,因为它没有被分配给任何东西。有副作用吗?

【问题讨论】:

    标签: javascript dom side-effects offsetheight


    【解决方案1】:

    某些旧版浏览器(如旧版 IE)在您执行某些操作后有时会出现不重排(重新渲染演示文稿)的问题。

    Mearly 查询 offsetHeight 等属性会强制 DOM 重新计算并重绘屏幕上的对象。

    因此,副作用是强制屏幕重排(重绘)。古怪,但老浏览器的老把戏。

    这里是a question where this is suggested as a solution 的旧版谷歌浏览器,没有它就无法正常工作。

    【讨论】:

    • 事实上,其他一些实例已经在评论中指出了这一点:if (doAnimate) this.$backdrop[0].offsetWidth // force reflow
    • 不仅是“一些旧浏览器”,而是所有这些。如果不确保渲染树是最新的,您将无法获得有效的 offsetHeight。
    【解决方案2】:

    这是来自bootstrap 团队的有用评论:

    if (doAnimate) this.$backdrop[0].offsetWidth // force reflow
    

    【讨论】:

      猜你喜欢
      • 2016-07-22
      • 1970-01-01
      • 2011-06-22
      • 1970-01-01
      • 2013-11-03
      • 2019-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多