我有许多大文本,我正在使用 columnizer jquery 插件(https://github.com/adamwulf/Columnizer-jQuery-Plugin)的精简版本将它们变成“列”以用于另一个插件。就我的目的而言,Columnizer 是一个不错的执行者——只要在被列化的块中没有浮动内容。
Chrome、FF 和 IE10 在大部分情况下在纯文本或带有图像和其他简单 html 的文本上都有相似的性能。但是,如果您包含浮动内容(在本例中为图像),情况会发生巨大变化:
带图片的大书,创建了大约 700 列 测试条件 Firefox(秒) Chrome(秒) -------------------------------------------------- --------------- 正常书籍构建(图像,浮动)31.5 1254.2 同上,但没有图像 23.2 18.9 带图像,但没有浮动图像 25.1 24.7 只有少数浮动图像 27.6 1010.9 删除除“p”之外的所有图像、标签 21.3 18.9
如您所见,这是一个巨大的差异。(我确实缓存了构建,但是因为每个浏览器/操作系统组合呈现的东西略有不同,我仍然必须首先在“主要”浏览器中构建每个。直到你等待 iPad 上的 Safari 构建这个事情——将 windows chrome 数字乘以 4。)
所以我的问题是:firefox 在没有被问到的情况下“正确”做了什么,我能做些什么来重新处理 columnizer 代码以在其他浏览器中模仿它?Columnizer 相当“脏”,因为它执行了数千个(我认为在本书中超过 100,000 个)附加,我知道这绝对不是很酷。是否使用文档片段?还有什么技巧?
Columnizer 要求目标容器(它在其中进行内容流动)位于 dom 中,以便可以正确应用样式(即,没有“display:none”,然后在完成时切换)。在我的 CSS 中,我按照建议将其设置为 position:absolute, visibility:hidden。我在想 FF 必须以其他浏览器没有的方式查看这组属性。或者...?
我应该在过程结束时注意,除了轻微的字体渲染差异外,浏览器之间的输出是相同的。