避免 HTML 文档重排

2023-11-22

我有数百个这样的“行”元素:

<div class='row'>
  <div class='cell'></div>
  <div class='cell'></div>
  <div class='cell'></div>
</div>

在页面上呈现它们之后,我需要获取它们的 clientHeight 。我知道“clientHeight”属性会强制回流,这会降低我的性能,因为它们太多了。然而 - 它们已经被渲染了,并且我知道它们的大小在它们被渲染的时间和我查询它们的高度的时间之间没有改变。

有没有办法告诉浏览器在查询高度时不要重排? 此外 - webkit 检查员说:

Layout tree size  5901
Layout scope      Whole document

而且 div 位于绝对定位的祖先中 - 不应该只重排绝对定位的元素吗?

Edit:

所以提供的答案是正确的。事实上,我弄脏了布局,因为我有这个循环:

rows.each(function(){
  $(this).css('height', this.clientHeight);
});

将代码更改为此解决了问题:

var heights = rows.map(function(){
  return this.clientHeight;
});
rows.each(function(){
  $(this).css('height', heights.shift());
});

每当 DOM 更改时,回流就会排队,但仅在以下情况下执行:

  1. 没有更多的 JavaScript 需要处理(脚本结束)或

  2. 当您查询必须呈现的计算值时,例如clientHeight.

因此,为了避免回流,您必须遵循以下规则

  • 更改 DOM 时不要查询 DOM

  • 当你想要查询的时候不要改变 DOM

实际上,这意味着您应该在修改 DOM 后将所有查询操作分组到脚本末尾。这样做只会对数千个元素回流一次,而不是对每个元素回流数千次。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

避免 HTML 文档重排 的相关文章

  • 从提交的表单中获取值

    我有一个非常简单的表格
  • req.body 为空 Express js

    我花了几个小时试图找出为什么 req body 是空的 我在 stackoverflow 上到处查看并尝试了所有方法 但没有运气 Express js POST req body 空 https stackoverflow com ques
  • 获取顶部框架的 URL

    在 Facebook 应用程序中 我需要检查顶部框架 主窗口 URL 是什么 并相应地显示内容 我尝试使用以下内容 if top location toString toLowerCase indexOf facebook com lt 0
  • 如何从 JQuery - IonRangeSlider 获取值?

    我怎样才能得到低值和高值ion rangeSlider http ionden com a plugins ion rangeSlider en html通过单击按钮来组件 这是我的 jQuery 代码
  • 性能 - String.charAt(0) 与 /^.{1}/

    从概念上讲哪个应该更快 String charAt 0 or 1 regex String charAt 0 必须处理和应用正则表达式 速度测试资源 Paul S https stackoverflow com users 1615483
  • 有什么办法可以让这个 C# 代码更快吗? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在读取一个大文件 X12 并解析其中的信息 我有两个瓶颈功能 我似乎无法解决 read line 和 get element 有什
  • 改进绩效反思 - 我应该考虑哪些替代方案?

    我需要动态地设置对象上的一堆或属性的值 将其称为传输对象 将在短时间内创建相当数量的此类传输对象并设置其属性 我想避免使用反射 还有其他选择吗 如果是的话 有我可以查看的示例实现吗 Use Delegate CreateDelegate h
  • 如何并排展开和折叠三个div?

    document ready function toggle click function if this data name show sidebar animate width 10 hide map animate width 89
  • 将图像嵌入 Chrome 扩展程序

    我正在构建一个 Google Chrome 扩展 它将 HTML 注入到真实的网页中 注入还包含图像 现在我想知道如何在扩展中引用图像 到目前为止 我只能在服务器上使用它们来引用它们http example com myimage png
  • 避免 IE 中因背景图像而出现“混合内容”警告的具体规则是什么?

    这与SSL 和 CSS 背景图像导致的混合内容 https stackoverflow com questions 1548551 ssl and mixed content due to css background images但这个问
  • 如何检查 Node.js 中是否定义了变量?

    我正在用node js 编写一个程序 它实际上是js 我有一个变量 var query azure TableQuery 看起来这行代码有时没有执行 我的问题是 我怎样才能做到这样的条件 if this variable is define
  • 保持 WebSocket 连接处于活动状态

    我正在研究 WebSocket 协议 并尝试在后端使用 Python 实现一个简单的 ECHO 服务 它似乎工作正常 但连接建立后立即断开 这是我的客户
  • 更改为通用接口对性能的影响

    我使用 Visual Studio 使用 C NET 开发应用程序 ReSharper 在我的方法原型中经常建议我用更通用的类型替换输入参数的类型 例如 如果我仅在方法主体中使用带有 foreach 的列表 则使用 List 和 IEnum
  • 使用 JS 从列表中删除最近的 元素的 URL

    所以我有一个网址列表 并且有删除按钮 图像按钮 当点击删除按钮时 按钮旁边的 url 必须从列表中删除 let list const remove document getElementById remove const view docu
  • 在 JavaScript 中将长数字转换为缩写字符串,并有特殊的简短要求

    在 JavaScript 中 如何编写一个函数来转换给定的 编辑 正整数 数字 低于 1000 亿 转换为 3 个字母的缩写 其中 0 9 和 a z A Z 算作一个字母 但点 因为它在许多比例字体中很小 不会 并且会被忽略信函限制条款
  • 代表和结构的速度问题

    我遇到了一些与结构和委托有关的速度问题 采用以下控制台应用程序代码 public delegate string StringGetter public class LocalString public LocalString string
  • 为车把/余烬定义模板内的数组?

    我在 ember 应用程序中有一个车把模板 它接受一个数组 我目前像这样声明数组 模板 Gd radio input content radioContent value blue JavaScript App IndexControlle
  • Wordpress 上的 Javascript 注入预防

    我的 WordPress 博客得到以下内容恶意的注入脚本 eval function p a c k e d e function c return c
  • 如何在 JS 文件中使用 Github 机密

    我有一个基本的 git 存储库 其中包含用于构建和部署的 github 操作 主要是 HTML 和 TS 文件 但是我必须在一些需要保密的 API 密钥中使用 所以我想办法为他们使用 GITHUB SECRETS 如何在我的 js 或 TS
  • 如何使用 javascript 获取 html5 视频的缩略图?

    我找到了根据 URL 获取视频缩略图的 JavaScript 代码 不过 我只在 YouTube 和 Vimeo 上找到了这个 似乎没有人列出如何处理旨在嵌入 html5 视频标签的视频的示例 能做到吗 谢谢 是的 您可以使用视频作为画布的

随机推荐

  • Caffe可以直接对图像的像素进行分类吗?

    我想将图像的像素分类为 是街道 或 不是街道 我有一些训练数据KITTI数据集我看到 Caffe 有一个IMAGE DATA图层类型 标签以与输入图像大小相同的图像形式存在 除了 Caffe 之外 我解决这个问题的第一个想法是在应该分类的像
  • 在 M1 Mac 上找不到 PyTables 的 HDF5 安装

    在 M1 Mac macOS Monterey 上运行12 4 Python 3 10 3 pip install tables Collecting tables Using cached tables 3 7 0 tar gz 8 2
  • 我是否必须在 Webstart 应用程序中显式调用 System.exit() ?

    最近我将 Swing 应用程序转换为 Webstart 该过程非常简单 但我发现在关闭所有窗口后 我的应用程序的 JVM 并未终止 线程转储显示有几个非守护线程 特别是 Swing 的 EDT AWT 和几个与 websart 相关的线程
  • 如何隐藏 C++ 中的类?

    假设我有 2 个类 我希望它们可见 在给定的头文件中 还有一个类是它们的祖先 我希望其中一个类仅对前面提到的两个类可见 在C 中如何实现不可见的类功能 滥用class充当namespace会这样做 我不推荐这种模式 class hidden
  • 服务中的 postDelayed()

    我正在尝试在一段时间内自行重新启动服务 我的代码看起来像这样 在onStartCommand Looper prepare Handler handler new Handler handler postDelayed new Runnab
  • 如何在Python中读取格式化输入?

    我想从 stdin 读取输入的五个数字 如下所示 3 4 5 1 8 分成单独的变量 a b c d 和 e 我如何在Python中做到这一点 我试过这个 import string a input b a split 对于两个整数 但它不
  • 如何从 React Native 打开其他应用程序?

    如何从 ReactNative 打开其他应用程序 Gmail 相机 如何将数据从当前场景传递到其他应用程序 我找到了这个 npm 库反应本机应用程序链接可以打开其他应用程序 这是基于深层链接的 如果您有任何深层链接 那么这个库可以提供帮助
  • 摘要式身份验证的概念 - 它真的有效吗?

    据我了解 摘要式身份验证 这是一种单向操作 对密码进行哈希处理并将哈希数据传输到服务器 然后 服务器将使用存储的密码 对其进行哈希处理 并与接收到的哈希密码进行比较 应该可以免受中间人攻击 我不明白的是 如果我是中间人黑客 我不需要原始密码
  • 如何测试ActiveJob是否已入队?

    如果记录成功保存 我有一个创建操作 该操作会调用 ActiveJob def create object Object new importer params respond to do format if object save MyJo
  • Google Apps脚本ScriptApp.getService().getUrl()总是返回错误的URL

    根据文档 此方法应返回 Web 应用程序的 URL 如果已部署 则返回 Web 应用程序的 URL 否则返回 null 如果您正在运行开发模式 Web 应用程序 则返回开发模式 url 我们有一个 Google 日历插件 其中我们使用以下方
  • 如何使用 MyBatis 3.x 插入对象集合?

    我是 MyBatis 的初学者 我只想知道如何从类的实例插入对象集合 假设我有一个类 User 与一对多关系中的 Note 相关 我只想提一下 我通过 Hibernate 的 hbm2ddl 使用 JPA 2 注释构建了我的架构 我将添加在
  • 将 FileInfo 数组转换为字符串数组 C#

    我创建一个像这样的 FileInfo 数组 try DirectoryInfo Dir new DirectoryInfo DirPath FileInfo FileList Dir GetFiles SearchOption AllDir
  • 未知的自定义元素: - 您是否正确注册了组件?对于递归组件

    嘿 我在将 vuetify 导入我的项目时遇到问题 我究竟做错了什么 Vue warn 未知的自定义元素 您是否注册了 组件正确吗 对于递归组件 请确保提供 名称 选项 app js import Vue from vue import V
  • 在 ASP.NET MVC 3 视图中渲染 System.Drawing.Image 的最佳方法

    我有一个 System Drawing Image 类型的对象 并且想在视图中显示该图像 最好的方法是什么 我发现了一些可能适合这种情况的自定义 Html Helper 方法 还发现了一个使用新操作方法的示例 该方法返回FileConten
  • 使用 Windows 在 Sublime Text 控制台中打印 utf 8 字符串

    当运行此代码时python myscript py从 Windows 控制台cmd exe i e outsideSublime Text 的 它的工作原理是 coding utf8 import json d json loads myk
  • 如何加快 Django 中大型数据集的迭代速度

    我有一个来自 Django ORM 查询的查询集 其中包含大约 1500 条记录 我使用了 select lated 和 only 方法来确保查询是严格的 我还使用了connection queries来确保只有这一个查询 也就是说 我确保
  • C#:如何从表单及其控件中拖动?

    我使用以下代码通过单击并拖动表单本身来拖动无边框表单 它可以工作 但当您单击并拖动窗体上的控件时 它就不起作用了 我需要能够在单击某些控件而不是其他控件时拖动它 通过标签拖动 但不能通过按钮和文本框拖动 我该怎么做 protected ov
  • lib commonCrypto 不适用于 iOS 模拟器?

    我一直在我的项目中添加 libCommonCrypto dylib 来进行 md5 哈希验证 在 iPhone iOS 5 1 上运行一切正常 但是当我尝试在模拟器上运行它时 出现以下错误 ld library not found for
  • 在 SQL Server 中使用 SELECT 仅获取包含字母数字数据(和某些标点符号)的字段

    我正在尝试过滤一些 SQL Server 数据并需要满足以下条件的结果 其中字段包含字母数字字符 不区分大小写 其中字段有一定的标点符号 撇号和连字符 该字段没有空格 有没有一种有效的方法可以在 SQL Server 中使用 CHAR 来做
  • 避免 HTML 文档重排

    我有数百个这样的 行 元素 div class row div class cell div div class cell div div class cell div div 在页面上呈现它们之后 我需要获取它们的 clientHeigh