寻找快速流动内容的想法
Looking for ideas to quickly flow content
本文关键字:寻找 更新时间:2023-09-26
我正在编写一些代码,将各种内容包装成文本列(以及图像、视频等)。代码运行良好,但由于我使用的算法,它相当慢,特别是这个通用逻辑:
- 向列中添加一些内容(本例中为文本)
- 检查column.scrollHeight>column.offsetHeight(这需要DOM回流)
- 如果是,则开始对文本进行二进制拆分,直到文本变短
基本上,我的问题是,我在一列中添加了未知数量的文本,所以在每一块文本之后,我都会检查列的滚动高度,这需要浏览器主动回流DOM,以便给我正确的滚动高度。所以我有50-100个或更多的回流,以便正确地布置所有东西。
关于如何避免大多数这种情况,有什么一般的想法吗?
您可以多次渲染内容。由于第一次会缓存它,所以速度应该相当快。多重渲染的原因如下。
-
在隐藏区域中渲染原始内容
-
检查列宽度与内容的比较
-
将内容覆盖在列上,但位于页面下方。这将截断溢出的部分内容。你可以用z索引或
overflow: hidden;
-
根据步骤2的检查内容,将内容的副本与以相同的方式在下一列中显示计算的偏移量,隐藏额外内容。
-
跟踪呈现的内容与总内容的对比,这样您就可以知道有多少如果有多个列,则需要对其执行此操作。
也许这和Travis J的建议是一样的,但我不确定,我不太理解他的解决方案。
您可以先在单个列上渲染所有内容,然后根据所需的列高度与每个元素的offsetTop
加height
,自上而下地循环元素,以确定何时拆分。当你找到一个要打断的元素时,缓存它的位置,然后继续。最后你应该有一个数组,里面有要打断的元件列表,这样你就可以把内容分成列了。
这对你有意义吗?
相关文章:
- 正在寻找比$(document).ready慢的$(window).load的替代方案
- 在Meteor Mongo中寻找价值
- 寻找一个免费的交互式美国地图与突出显示的州
- 正在寻找一种跨移动浏览器兼容的方式,通过内置麦克风进行录制
- 正在寻找一个插件来创建平面图
- 正在寻找从JSON/对象构建DOM客户端的JS库
- 正在寻找一个非常简单的例子UpdateListItems与Sharepoint2007的SPservices
- 寻找使用Javascript从Kendo UI时间选择器中减去时间的更好替代方案
- 寻找快速流动内容的想法
- 寻找HTML5视频是否需要加载整个文件
- 寻找一个好的答案字符串圆形物体
- 正在寻找具有多种功能的文本编辑器
- 正在寻找一个好的在线JS obsfucator只用于缩小的目的
- 如何在HTML5视频中获得寻找事件的起点
- 寻找好的标签库
- JavaScript 遍历 DOM 寻找特定的 Aria-label
- 寻找为什么 '[1,2,3] === [1,2,3]' 在 JS 中是错误的解释
- 在java实现中寻找javascript md5方法
- 正在寻找在rxjs中使用scan的更干净的方法
- 正在寻找与以下jQuery解决方案等效的javascript解决方案