最近写东西碰到一个问题,通过document.getElementById(id).style.XXX无法获取到样式值?查完资料才发现方法只能获取元素的内联样式,那要获取内部样式或外部样式该怎么办?

getComputedStyle

原来获取外部样式或内部样式用的是window.getComputedStyle方法,用法如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>getComputedStyle</title>
    <style>
        div{width:100px; height:100px; background-color:#333;}
    </style>
</head>
<body>
    <div id="div"></div>
    <script>
        window.onload=function(){
            var div = document.getElementById('div');
            console.log(window.getComputedStyle(div, false)['width']); //100px
        };
    </script>    
</body>
</html>

这种方法可以很好的在Chrome、Firefox、Opera、Safari、IE9+运行,但在IE8及以下的浏览器就不行了,原来在IE6-IE8有自己的方法:element.currentStyle。所以为了兼容性考虑我们可以封装一下:

function getStyle (obj, sName){
    return (obj.currentStyle || window.getComputedStyle(obj, false))[sName];
}

最后

第一次写文章可能不怎么样,望大神们轻拍......
自转行来现在公司已有几个月了,公司就我一个前端,工作也比较少,好多基础东西不写项目都要忘了,接下来要自己写点东西好好回忆巩固一下了。


funnyF2E
808 声望43 粉丝

一个人