获取非行间样式封装

代码

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }

        #box {
            width: 200px;
            height: 200px;
            background: coral;
        }
        #box2 {
            width: 100px;
            height: 100px;
            background: peru;
        }
        #box3 {
            width: 111px;
            height: 111px;
            background: forestgreen;
        }
    </style>
</head>

<body>
    <div id="box" ></div>
    <div id="box2" ></div>
    <div id="box3" style="color:#000;"></div>


    <script>
        /*
            获取非行间样式方法:
            兼容:
            标准【谷歌,火狐,360...】:getComputedStyle
            格式:  getComputedStyle(元素).样式属性
            
            IE: currentStyle
            格式: 元素.currentStyle.样式属性
        */
        var box = document.getElementById('box');
        var box2 = document.getElementById('box2');
        var box3 = document.getElementById('box3');
 
        // console.log(getComputedStyle(box).height);
        // console.log(box.currentStyle.background);

        // 兼容判断
        function fn(ele,attr) {
            if (window.getComputedStyle) {  // 标准浏览器
                return getComputedStyle(ele)[attr]; 
            } else {   // ie浏览器
                return ele.currentStyle[attr];
            }
        }
        box.innerHTML = fn(box,'width');
        box2.innerHTML = fn(box2,'height');
        box3.innerHTML = fn(box3,'background')
     
        /*
            1.找到反复执行的代码块,用一个函数外壳将其套起来
            2.在代码块中找到有可能变化的地方,提成未知数(形参)
            3.调用函数,并且传实参。
        */

        // console.log(getComputedStyle(box3).color)
    </script>
</body>

</html>
原文地址:https://www.cnblogs.com/shihaiying/p/13229880.html