JavaScript的DOM_通过计算后样式来获取

虽然可以通过 style 来获取单一值的 CSS 样式,但对于复合值的样式信息,就需要通过计算样式来获取。

DOM2 级样式,window 对象下提供了 getComputedStyle()方法。接受两个参数,需要计算的样式元素,第二个伪类(:hover),如果没有没有伪类,就填 null。

这种计算样式的获取,不仅仅可以获取到没有设置的默认样式,也可以获取行内,内联和链接(因为不管你在哪里设置CSS,最终会驻留在浏览器的计算样式里)

<script type="text/javascript">
    window.onload = function(){
        var box = document.getElementById('box'); //获取 box
        var style = window.getComputedStyle(box,null);
        alert(style);                    //[object CSS2Properties],表示计算后的css样式
        alert(style.fontSize);            //结果是计算后的样式,一般表示默认样式和设置后的样式,即如果设置了样式结果是设置后的样式,如果没有设置就是默认的样式
    }
</script>
</head>
<body>
    <div id="box" style="color:#F00; font-size:20px;">测试Div</div>
</body>

IE 6,7,8不支持这个 DOM2 级的方法,但有个类似的属性可以使用 currentStyle 属性通过节点调用。

<script type="text/javascript">
    window.onload = function(){
        var box = document.getElementById('box'); //获取 box
        var style = box.currentStyle;
        alert(style.color);
    }
</script>
</head>
<body>
    <div id="box" style="color:#F00; font-size:20px;">测试Div</div>
</body>

做兼容

<script type="text/javascript">
    window.onload = function(){
        var box = document.getElementById('box'); //获取 box
        var style = window.getComputedStyle ? window.getComputedStyle(box, null) : null || box.currentStyle;
        alert(style.color);                 //颜色在不同的浏览器会有 rgb()格式
        alert(style.fontSize);
        alert(style.border);                 //不同浏览器不同的结果,这个属性被计算之后就不存在了,这个属性不兼容IE6,7,8  最好borderTopColor  这样每个获取
        alert(style.fontFamily);             //计算显示复合的样式值
        alert(box.style.fontFamily);         //
    }
</script>
</head>
<body>
    <div id="box" style="color:#F00; font-size:20px;">测试Div</div>
</body>
原文地址:https://www.cnblogs.com/LO-ME/p/4590139.html