jquery - 如何快速为大量元素设置相对高度

标签 jquery css

我正在使用这段代码为许多 div 设置相对高度:

$("#output div").each(function (index) {
    $(this).css({ "height": ($(this).height() * multiplier) + "px" });
});

这是一个非常昂贵的操作。有什么方法可以优化速度吗?

设置绝对高度,像这样:

$("#output div").css({ "height": "20px" });

速度极快。遗憾的是,我不需要绝对值,而是相对于乘数的值。

--

编辑:

我不断添加这些高度未知的 div。像这样:

$("#output div:first").remove();
$("#output").append("<div class=\"output-column\" style=\"height: " + 40 * Math.random() + "px;\">&nbsp;</div>");

所以基本上它是一个图表,假设有 1000 个 div,从左侧弹出并在右侧插入(它们是 1 像素宽)。我需要的是让这些 div 动态改变它们相对于最高 div 的高度。所以最高的 div 占用了父级的高度,其他的相应地调整了它们的高度。因此,如果输入的 div 具有 120% 的高度,则必须将其调整为 100%,而其他的则相对向下调整 20%。

最佳答案

这里的问题很可能不是 javascript(虽然我不知道你在做什么我不能确定)。问题是每次在该循环中设置单个元素的高度时,浏览器都会重新计算布局。所以如果你有 1000 个元素,它会重新计算布局 1000 次,而你真正需要的是先设置所有高度,然后在所有设置完成后重新计算布局。

你是怎么做到的?带有文档片段:https://developer.mozilla.org/en-US/docs/Web/API/document.createDocumentFragment .

绝对定位元素如此快的原因是因为绝对元素不影响页面上任何其他元素的定位。它们“漂浮”在它们上方,因此需要更少的布局重新计算。

关于jquery - 如何快速为大量元素设置相对高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19768024/

相关文章:

jquery - 在 jQuery 选择器上使用正则表达式查找基于 ids 的所有元素

jquery - CSS 样式的列根据子元素的数量移动垂直位置

7 秒幻灯片图像后的 Javascript

css - 移动优先媒体查询不会覆盖原始 CSS

jquery - 检查子 div 是否有类的自定义方法 - jquery validate

JavaScript 文件路径问题/错误

jQuery 砌体问题

jquery - 不可见数据的打印问题

javascript - 使用 Javascript 确定网站是公开的还是私有(private)的

css - 如何去除使用线性渐变属性时出现的条纹