这是我的问题: 当我打电话 document.defaultView.getComputedStyle(Node, "").getPropertyValue("行高")
safari 在未指定行高时返回字符串“normal”,而 firefox 始终返回以像素为单位的值。
这给我带来了一个大问题,特别是因为我没有找到一个可靠的公式来获取数值(我发现它应该在 1em 和 1.3 之间但没有精确的)。
有解决办法吗?
最佳答案
好吧,我找到了部分解决方案:
function getLineHeight(node){
var clh=document.defaultView.getComputedStyle(node, "").getPropertyValue("line-height");
var copy;
if (clh=="normal"){
copy=node.cloneNode(false);
copy.style.padding=0+"px";
copy.style.border="none";
copy.innerHTML="x <br> x <br> x <br> x <br> x <br> x <br> x <br> x <br> x <br> x";
node.parentNode.insertBefore(copy, node);
clh=copy.offsetHeight/10;
node.parentNode.removeChild(copy);
delete copy;
}
else clh=parseFloat(clh);
return clh;
}
对于那些想知道为什么“innerHTML”中的所有那些“br”以及 offsetHeight 返回整数值的人,因此使用 10 行节点并将结果除以 10 会给出更准确的答案。
关于javascript - Safari 返回值 "normal"为 "line-height"样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3191342/