- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我有几百个像这样的“行”元素:
<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 位于绝对定位的祖先中 - 难道不应该只回流绝对定位的元素吗?
编辑:
所以提供的答案是正确的。我实际上弄脏了布局,因为我有这个循环:
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 发生变化,Reflow 就会排队,但只有在以下任一情况下才会执行:
没有更多的 javascript 要处理(脚本结束)或
当您查询必须呈现的计算值时,例如 clientHeight
。
所以,要避免回流,必须遵守以下规则
在更改 DOM 时不要查询它,并且
当你想查询时不要改变 DOM
实际上,这意味着您应该在完成修改 DOM 后将所有查询操作分组在脚本的末尾。这样做只会对数千个元素回流一次,而不是对每个元素回流数千次。
关于javascript - 避免 HTML 文档回流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19815810/
不确定是否有解决此问题的方法。我想知道是否有一种方法可以检测浏览器何时实际更新用户界面。 假设我想在运行长时间运行的同步代码块之前向元素添加一个类,在同步函数运行之后,该类将被删除。 el.class
给定这段代码: $('#foo').css('height', '100px'); // or any other change to the DOM console.log('done!'); 当第
有没有办法全局 console.log() Reflux 中所有触发的 Action ?理想情况下同时打印它们的参数。 最佳答案 正如 Cory Danielson 所说,Reflux 使用 Even
出于某种原因,每次我在我的 React 组件中触发一个 Action 时,与该 Action 关联的存储方法都会触发两次。使用 Firefox 调试器,我注意到事件发射器似乎“发射”了两次 Actio
我正在处理一个包含用户可调整大小的列的网页,并且在调整列大小时遇到重排问题,这会导致元素在列变窄时被下推和不对齐。然而,谷歌文档似乎没有这个问题;您可以调整文档列表的大小,它会 chop 文本而不
好吧,我遇到了我认为是优化问题的问题。我写了一个简短的应用程序,它从两个字段中获取数据,逐个字符地将它们分开并将它们相互匹配,突出显示差异。问题似乎是因为函数循环并且不仅一次打印每个字符,而且一次一个
我在阅读两个 CSS 属性 display:none 和 visibility:hidden 之间的区别时遇到了 DOM reflow 术语。 声明是 display: none causes a D
页面呈现流程 在讨论页面重绘、回流之前。需要对页面的呈现流程有些了解,页面是怎么把html结合css等显示到浏览器上的,下面的流程图显示了浏览器对页面的呈现的处理流程。可能不同的浏览器略微会有些不
我经常读到在读取元素样式后更改样式是一种不好的做法,因为它会触发不必要的重排。考虑来自 here 的这段代码: 错误代码: elementA.className = "a-style"; var he
嗨,我有这个导航栏: text
有时我们必须强制浏览器重绘/回流以呈现某些状态。例如: window.onload = function () { setTimeout(function(){ document.getE
我是 JavaScript 和 D3 新手,我正在尝试修改 DOM 元素的某些属性,然后进行页面重排/刷新,以便我可以看到这些更新的更改。诀窍是,我需要这种情况自动发生,而不需要任何类型的 oncli
过去我在 javascript 方面做过很多工作,包括一些 DOM 操作。从那里我了解到回流/重绘在某些情况下可能是一个很大的性能问题,并且通常应该限制在最低限度。例如,当添加一组 div 时,您应该
我最近在我的项目中使用了回流,这是一个让我很困惑的问题。 作为回流模式,我在我的 React 组件中调用操作,并在我的回流存储中获取正在监听这些操作的远程数据。我的组件会监听存储中数据的变化。例如获取
tl;dr:每次我向其添加新图表时,GraphStore 的 UUID 都会发生变化。这让我假设每个图都在创建自己独特的 GraphStore。我希望他们都共享一个商店。 我有一个包含多个图形组件的
例如,如果我做类似的事情 requestAnimationFrame(function() { el.appendChild(otherEl) el.appendChild(anoth
是否可以在 RubyMine 3.2.4 中格式化或重新缩进 html?我尝试了 Code... Reformat Code 但它似乎对 HTML 没有任何作用。我需要插件吗? 最佳答案 它确实有效。
我想知道现代网络浏览器是否有一种可靠的方法来检测文档回流和/或重绘,或者是否有任何紧迫的兴趣可能将其放入 W3 规范。 我还想知道如何使用特定于 vendor 的技巧(例如,Mozilla 显然有一个
block 项的每个可视行的第一个元素是否有一个 CSS 选择器?也就是说,想象一下有 20 个 block 元素,它们跨多行流动以适应它们的父容器;我可以选择每行最左边的元素吗? 通过查看所有元素的
我正在构建一个 React+Reflux 应用程序,除其他外,它允许创建/删除/编辑类别。到目前为止,我能够显示所有类别并通过关联的存储和操作处理 React 组件内类别的创建/删除。这一切都很好,更
我是一名优秀的程序员,十分优秀!