此函数改编自网站:http://eriwen.com/javascript/measure-ems-for-layout/
function getEmSize(el) {
var tempDiv = document.createElement("div");
tempDiv.style.height = "1em";
el.appendChild(tempDiv);
var emSize = tempDiv.offsetHeight;
el.removeChild(tempDiv);
return emSize;
}
我在 window.resize 上将此函数作为另一个函数的一部分运行,它在 Firefox 3.6 上导致了当前 Safari 或 Chrome 上不存在的性能问题。 Firefox 的分析器说我在这个功能上花费的时间最多,我很好奇为什么会这样。
有没有办法在不完成所有这些工作的情况下在 javascript 中获取 em 大小?我想在调整大小时重新计算大小,以防用户更改它。
最佳答案
看起来这个功能可能只是
function getEmSize(el) {
return Number(getComputedStyle(el, "").fontSize.match(/(\d+)px/)[1]);
}
换句话说,您可以只获取元素的计算字体大小,而不是创建一个 div 并调整它的大小。
关于javascript - 为什么这个 javascript 函数在 Firefox 上这么慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4571813/