DOM疑惑点整理(二)内联、嵌入、外联样式访问

访问的style属性为空?

有时候,直接通过某元素的style属性去查看相关信息时,会发现查看到的是空的属性。
原因很简单,style属性只能访问内联样式,而你把css写在了外部文件。
不是很清楚内联样式,可以看下面的解释:
内联样式:直接加在某个元素属性中的样式。

<p style="color:white;font-size:10px;">外联样式</p>

嵌入样式:样式的属性内容写在该网页代码中。

<head>
    <style>
        p{
            color:white;
            font-size:10px;
        }
    </style>
</head>
<body>
    <p>内联样式</p>
</body>

外联样式:样式属性,写在外部文件,通过链接导入。

<head>
    <link rel='stylesheet' href='/stylesheets/style.css' />
</head>
<body>
    <p>内联样式</p>
</body>

注意点:css样式的应用,采取就近原则,因此一般情况优先级是:内联样式>嵌入样式>外联样式。(但如果外联样式的link语句在嵌入样式之后,那么外联样式由于离元素更近,优先级就高于嵌入样式了)

css样式访问注意点

①虽然通过style属性,只能访问内联元素样式,但我们通常还是利用style属性来改变css样式。
②不建议利用style属性去查看一个元素的样式,因为你很可能无法得到正确样式。Dom2中有新的方式去查看完整的属性(某元素内联、外联、嵌入样式合起来计算后的属性)。
方法如下:

function showComputedStyles(){
        const myDiv = document.getElementById("myDiv");  //假设有个myDiv
        if(myDiv.currentStyle){      //IE不支持getComputedStyle方法
            let computedStyle = myDiv.currentStyle;
            console.log(computedStyle.backgroundColor);   
        }else{                       //非IE浏览器可以用getComputedStyle方法
            let computedStyle = document.defaultView.getComputedStyle(myDiv,null); 
            console.log(computedStyle.backgroundColor); 
        }
    }

注意点:通过这样的方式得到的属性,都是经计算后的,同时也是只读的。但十分建议用这种方式去查看元素的属性。关于修改属性,还是得用style属性或者setAttribute。

相关推荐