v147 · css · interop fix
CSS update: decoupling of Width and Style properties
Chrome 147 aligns with Firefox and Safari: the computed values of border-width, outline-width, and column-rule-width are now independent of their corresponding *-style properties. Previously Chrome forced the computed width to 0px when style was none or hidden; now the author-specified width is always reflected in getComputedStyle().
what changed
| Property | Before Chrome 147 | Chrome 147+ |
|---|---|---|
border-width |
Computed value forced to 0px when border-style: none |
Computed value reflects the authored value regardless of border-style |
outline-width |
Computed value forced to 0px when outline-style: none |
Computed value and resolved value both reflect the authored value |
column-rule-width |
Computed value forced to 0px when column-rule-style: none |
Computed value and resolved value both reflect the authored value |
why it matters
Pages that read getComputedStyle().borderWidth or outlineWidth — for example, to compute layout or animate from a base state — now get the authored value reliably across Chrome, Firefox, and Safari. Code that worked on Firefox and was wrong on Chrome no longer needs a workaround.
/* Chrome 147+ — these read back 4px even though there's no visible border */
.box {
border-style: none;
border-width: 4px;
}
const w = getComputedStyle(box).borderWidth;
// Chrome 147+: "4px" (previously: "0px")
// Firefox: "4px"
// Safari: "4px"
Source: chromestatus and CSS Backgrounds Level 3, May 2026.
quick reference
| Affected properties | border-width · outline-width · column-rule-width |
|---|---|
| Interop | Now matches Firefox and Safari behaviour |
| Shipped in | Chrome 147 (desktop + Android) |
| ChromeStatus | 5133099851317248 — CSS update: decoupling of Width and Style properties |
| Spec | CSS Backgrounds and Borders Level 3 |