JavaScript中getComputedStyle()方法的用法与区别详解

作者:白露时间:2026-10-25 21:54:09浏览:478

本文详细介绍JavaScript中getComputedStyle()方法的用法。该方法用于获取元素当前计算后的样式值,返回只读对象。文章对比了getComputedStyle与element.style在读写权限、获取范围及默认值处理上的差异,并通过代码示例说明如何正确读取CSS属性,帮助开发者理解最终渲染样式的获取方式。

getComputedStyle() 方法基础用法

getComputedStyle() 是 JavaScript 中用于获取元素当前最终样式的方法。

该方法挂载在 window 对象上,可直接调用。

调用时需要传入两个参数。

  • 第一个参数指定需要获取样式的 DOM 元素节点。
  • 第二个参数通常用于指定伪元素(如 ::before 或 ::after),若无需获取伪元素样式,一般传入 null。

该方法执行后返回一个 CSSStyleDeclaration 对象,其中封装了当前元素所有计算后的样式属性。

可以通过 getComputedStyle(element, null).propertyName 的形式来读取具体的样式值。

如果某个样式未在代码中显式设置,该方法会返回浏览器计算后的真实值,而非 CSS 默认值(如 auto)。

例如,若未设置 width 属性,getComputedStyle 不会返回 "auto",而是返回具体的像素长度值。

为了更便捷地访问样式名,可以结合正则表达式处理属性名。

推荐使用 getComputedStyle(element, null)[propertyName] 的方括号语法来获取样式,这样能更好地处理带连字符的 CSS 属性名(如 background-color)。

以下是一个具体的应用示例。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        #box1{
            width: 100px;
            height: 100px;
            background-color: red;
            left: 100px;
            position: absolute;
        }
    </style>
    <script>
        window.onload=function(){
            //获取box1元素节点对象
            var box1=document.getElementById("box1");
            //这里调用getComputedStyle来获取left的值
            var left=getComputedStyle(box1,null)["left"]; 
            alert("left的值是"+left);         
            }
        }
    </script>
</head>
<body>
    <div id="box1"></div>
</body>
</html>

代码中获取 id 为 box1 元素的 left 属性,该元素在 CSS 中设置的 left 值为 100px。

运行上述代码后的输出结果如下所示。

getComputedStyle() 方法基础用法

getComputedStyle 与 element.style 的区别

补充说明:getComputedStyle 与 element.style 的主要区别。

虽然可以通过 element.style 获取元素的 CSS 样式声明对象,但两者在功能上有显著差异,主要体现在只读与可写权限上。

首先,getComputedStyle 返回的对象是只读的,仅支持读取样式,不支持直接设置;而 element.style 既可读也可写,功能更灵活。

其次,获取的样式范围不同。getComputedStyle 返回的是最终应用在元素上的所有 CSS 属性集合,即使没有显式编写 CSS 代码,也会包含继承自父元素的默认样式。

相比之下,element.style 仅包含元素 inline style 属性中直接定义的 CSS 样式。

因此,对于一个没有任何内联样式的普通元素(如 <p>),getComputedStyle 返回的对象中可能包含 190 多个属性(length 属性值大于 190),而 element.style 的 length 则为 0。

总结

本文介绍了 JavaScript 中 getComputedStyle 的用法。如需了解更多相关 JS 知识,请查阅本站其他文章或继续浏览后续内容,感谢支持。

作者最新文章