当前位置: 首页 > 面试题库 >

何时在DOM环境中发生重排?

宣望
2023-03-14
问题内容

哪些活动将触发DOM的网页重排?

似乎有不同的观点。
* 添加或删除DOM节点时。
* 动态应用样式时(例如element.style.width =“ 10px”)。
* 当您检索必须计算的度量时,例如访问offsetWidth,clientHeight或任何计算出的CSS值(通过DOM兼容浏览器中的getComputedStyle()或IE中的currentStyle)。

但是,根据http://dev.opera.com/articles/view/efficiency-
javascript/?page=3的说法,仅当已经存在重排操作排队时,进行测量才会触发重排。

还有其他想法吗?


问题答案:

这两篇文章都是正确的。可以放心地假设,只要您正在执行可能合理地要求DOM中元素尺寸的操作,就会触发重排。

另外,据我所知,这两篇文章都说相同的话。

第一篇文章说回流发生在以下情况:

当您 检索必须计算的度量时 ,例如访问 offsetWidthclientHeight
或任何计算出的CSS值(通过DOM兼容的浏览器中的 getComputedStyle()
或IE中的currentStyle),而DOM更改则排队等待进行。

第二篇文章指出:

如前所述,浏览器可能会为您缓存一些更改,并且在所有更改完成后仅重排一次。但是,请注意 对元素进行测量将迫使其回流
,因此测量将是正确的。所做的更改可能会或可能不会进行重新绘制,但重新编写本身仍必须在幕后进行。

当使用 offsetWidth之类的 属性或 getComputedStyle之类的
方法进行测量时,会产生这种效果。即使不使用数字,只要在浏览器仍在缓存更改时使用其中任何一个,就足以触发隐藏的重排。如果重复进行这些测量,则应考虑仅进行一次测量并存储结果,以便以后使用。

我认为这与他们先前所说的相同。Opera将尽最大努力为您缓存值并为您避免重排,但是您不应该依赖它的能力。

出于所有意图和目的,只要相信当他们说所有三种类型的交互作用都可能引起回流时,他们俩都会说。



 类似资料:
  • 更新时间:2019-08-31 11:22:33 服务分为生产环境与开发环境,未发布的服务认为是在开发环境,发布后的服务为生产环境的服务。生产环境的服务才可以在web工作台,或代码工程内调用。生产环境的服务不可再进行修改,需要在开发环境中修改部署发布服务后,才可生效。 服务运维监控功能是为生产环境的服务提供的,您可以在此查看生产环境服务的调用量及运行日志。

  • 我们已经成功实现了账户激活和密码重设功能,本节要配置应用,让它在生产环境中能真正地发送邮件。我们首先搭建一个免费的邮件服务,然后配置应用,最后再部署。 我们要在生产环境中使用 SendGrid 服务发送邮件。这个服务是 Heroku 的扩展,只有通过认证的账户才能使用。(要在 Heroku 的账户中填写信用卡信息,不过认证不收费。)对我们的应用来说,入门套餐(免费,写作本书时限制每天最多只能发送

  • 我试图在prod环境中发送电子邮件,但它不起作用...我收到了这个日志: 【2014-06-30 09:37:54】请求。关键:未捕获的PHP异常Swift\u TransportException:“预期响应代码250,但得到代码“530”,消息“530 5.7.0必须首先发出STARTTLS命令。o2sm28357522wia。16-gsmtp“”,位于C:\xampp\htdocs\UniD

  • 我在带有ehacache2.1.0库的Webphere 7. x的生产环境中有一个问题,web容器的线程都在等待咨询或插入缓存中。 这是所有webcontainer线程挂起时的转储: 我在ehache上使用Spring作为抽象层,以编程方式获取/放入缓存的代码没有什么特别的。 缓存的配置如下: 可以访问缓存的代码: ehache配置文件:

  • 连接到kerberized hadoop环境时错误:[Simba]ImpalaJdbcDriver无法连接到服务器:[Simba]ImpalaJdbcDriver Kerberos身份验证失败。 我已经在virtualbox中安装了cloudera quickstart vm,启用了kerberos,编写了连接到imapala db的java代码,并得到了kerberos身份验证失败的错误。 我已

  • 生产中的EAP EAP在默认的FreeRADIUS安装中开箱即用。但是,也有一些要点需要注意或更改以适应您的环境。在本节中,我们将介绍以下几点: 适当的公钥基础设施(PKI)的重要性 配置内部隧道虚拟服务器 内部和外部隧道识别的问题 禁用未使用的EAP方法 公共密钥基础设施简介公钥基础结构主要用于两件事: 验证某人的身份 通过不安全的连接交换安全数据 为了确保某人是他们声称的人,我们使用证书颁发机