首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >safari返回值"normal“表示"line-height”样式

safari返回值"normal“表示"line-height”样式
EN

Stack Overflow用户
提问于 2010-07-07 09:41:00
回答 2查看 676关注 0票数 0

这就是我的问题:当我调用document.defaultView.getComputedStyle(Node,"").getPropertyValue("line-height")

当没有指定行高时,safari返回字符串"normal“,而firefox总是返回以像素为单位的值。

这给我带来了一个大问题,特别是因为我没有找到一个可靠的公式来获得这个数值(我发现它应该在1em和1.3之间,但没有精确的值)。

有解决方案吗?

EN

回答 2

Stack Overflow用户

发布于 2010-07-09 00:35:57

好吧,我找到了一个部分解决方案:

代码语言:javascript
复制
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可以得到更准确的答案。

票数 1
EN

Stack Overflow用户

发布于 2010-07-07 09:57:06

不,没有解决方案。浏览器之间的默认设置总是不同的,因为默认设置应该是什么没有标准。

用户可以设置自己的样式表来覆盖标准,因此您甚至可以从同一浏览器的两个不同实例中获得不同的结果。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3191342

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档