javascript - 顺利回流大量图像(600+)

标签 javascript css asynchronous svg reflow

我正在开发一个用大量图像填充页面的网络应用程序。

它在布局上类似于图像搜索,因为用户在页面顶部选择一些设置,页面会立即充满与她的选择相对应的图像。

有时在一个回调中生成多达 600 多张图像。它们是带有包含嵌入 svg 的数据 uris 的 img 元素。

我的问题是关于性能的。 Javascript 本身完成得非常快,但是一旦将 600 张左右的图像添加到 DOM 中,浏览器最多可能需要 15 秒才能完成所有重排。浏览器此时卡住,菜单变得无响应,并且在回流完成之前不会显示任何更改。 ( Chrome 版本 66)

有没有办法让我消除这个瓶颈并使所有图像回流更快?例如,一种使布局变得微不足道的 CSS 方法?如果我将所有图片制作成相同大小会有帮助吗?

如果不能加速,有没有办法在不阻止用户与页面交互的情况下进行回流?

感谢您的帮助!

最佳答案

解决方案:浏览器在所有回流期间卡住的原因是因为我的代码是同步执行的,因此占用了浏览器。

通过为每个图像执行 setTimeout(function, 0) 使代码异步,其中 function 将图像添加到 DOM,解决了问题。

关于javascript - 顺利回流大量图像(600+),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51156937/

相关文章:

javascript - dart,指定 web 的根文件夹

html - 如何从 HTML/CSS 中的表格中删除单元格?

c# - 使用 NetworkStream.BeginRead 和 NetworkStream.EndRead 实现超时

jquery - 异步加载 Google 图表?

c# - 异步委托(delegate)操作澄清?

javascript - 如何使用javascript设置div标签的高度和宽度?

javascript - 触发单击 Angular 2 中选择的第一个选项

css:最后一行被分成两部分,而它不应该

javascript - 如何让两层 Canvas 一层叠一层

javascript - Angular $viewValue 未反射(reflect)在更改事件的文本框中