javascript - Safari 返回值 "normal"为 "line-height"样式

标签 javascript safari css

这是我的问题: 当我打电话 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/

相关文章:

javascript - 在数据表中单击选择行并将所选数据导出为 Excel

python - 让selenium在python中使用默认配置文件启动safari

javascript window.open 在 safari 和 chrome 中不起作用

android - 为什么这些媒体查询不能在 Android 上用于网页?

css - 在div溢出区域设置背景色

html - 带背景色和边框间距的div

javascript - 一次将 onkeyup 事件分配给多个对象

javascript - 用于过滤 li 元素列表的 jQuery 插件

javascript - CoffeeScript 作业

html - Safari 没有加载我的 styles.min.css