应使用 window.getComputedStyle() 获取 DOM 元素计算后的最终样式值,它返回只读的 CSSStyleDeclaration 对象,包含继承、层叠、单位转换(如 px、rgb)后的所有生效样式;伪元素需显式传参,display: none 元素部分属性失真,推荐结合 getBoundingClientRect 获取精确盒模型。

getComputedStyle 是 JavaScript 中获取元素最终计算样式的标准方法,它返回一个只读的 CSSStyleDeclaration 对象,包含浏览器实际应用到该元素上的所有 CSS 属性值(已解析为绝对单位、继承生效、级联计算完成)。
基本用法:获取单个或全部样式
语法很简单:
-
const style = window.getComputedStyle(element)—— 获取全部计算样式(推荐先存变量,避免重复调用) -
style.getPropertyValue('color')—— 获取指定 CSS 属性值(支持驼峰或短横线写法,如'backgroundColor'或'background-color') -
style.color—— 也可用点语法访问常见属性(但不推荐,部分属性名不兼容,比如float要写成cssFloat)
注意伪元素的特殊处理
如果要获取 ::before 或 ::after 的样式,必须传入第二个参数:
getComputedStyle(element, '::before')getComputedStyle(element, '::after')- 传
null或省略则默认获取元素自身样式 - 伪元素必须在 CSS 中已定义(哪怕内容为空),否则返回空样式对象
关键细节:什么能取到,什么取不到
能取到的: 所有已计算完成的 CSS 属性,包括继承值、百分比转成像素后的值(如 width: 50% 在 400px 宽容器中返回 "200px")、em/rem 转换结果、颜色转为 rgb() 或 rgba() 格式等。
取不到的:
- 内联样式中被 !important 覆盖的声明(
getComputedStyle返回的是最终生效值,不是原始声明) - CSS 自定义属性(
--my-color),需用style.getPropertyValue('--my-color')显式获取,不会自动参与计算 - 未渲染的元素(
display: none或未插入 DOM 的元素),返回null;可临时设visibility: hidden; position: absolute; left: -9999px后再取 - 某些动态生成的样式(如 CSS 动画中间帧),需确保元素已触发重排或在动画帧回调中获取
实用小技巧
- 判断是否隐藏:
style.display === 'none' || style.visibility === 'hidden' - 获取真实宽高:
parseInt(style.width)或直接用element.getBoundingClientRect()更可靠 - 批量读取多个属性时,先缓存
getComputedStyle结果,避免多次触发重排 - 在
requestAnimationFrame中调用,确保获取的是最新布局结果
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











