Intent to Ship: Decouple border-width, outline-width and column-rule-width values from their corresponding style values

163 views
Skip to first unread message

Chromestatus

unread,
Jan 21, 2026, 1:46:26 PM (12 days ago) Jan 21
to blin...@chromium.org, alm...@microsoft.com, kbab...@microsoft.com, mho...@microsoft.com, samome...@microsoft.com
Contact emails
samome...@microsoft.com, kbab...@microsoft.com

Explainer
No information provided

Specification
https://github.com/w3c/csswg-drafts/pull/11913/files

Summary
This proposal untangles ‘border-width’, ‘outline-width’, and ‘column-rule-width’ from their corresponding ‘*-style’ properties. Previously, if a ‘*-style’ property, such as ‘border-style’, was set to ‘none’ or ‘hidden’, the computed ‘*-width’, such as ‘border-width’, would resolve to ‘0px’, even if the width was explicitly set to ‘10px’. Following a resolution in the CSSWG [1], the computed values of ‘border-width’, ‘outline-width’, and ‘column-rule-width’ will now reflect their specified values, regardless of the associated style property's value. Similarly, the resolved values of ‘outline-width’, and ‘column-rule-width’ will now reflect their specified values, regardless of the associated style property's value. [1]: https://github.com/w3c/csswg-drafts/issues/11494#issuecomment-2675800489

Blink component
Blink>CSS

Web Feature ID
No information provided

Motivation
Today, CSS special-cases ‘border-*-width’, ‘outline-width’, and ‘column-rule-width’ so that their computed value becomes ‘0px’ when the corresponding ‘*-style’ is ‘none’ or ‘hidden’, even if the author specified a nonzero width. With Gap Decorations extending ‘column-rule-*’ properties to support lists/repeaters, applying that special-case becomes ambiguous and difficult to define consistently. Having ‘*-width’ values independent of ‘*-style’, provides an intuitive model for these properties and better reflects the author-specified value.

Initial public proposal
https://github.com/w3c/csswg-drafts/issues/11494

Search tags
column-rule-width, border-width, outline-width

TAG review
No information provided

TAG review status
Not applicable

Risks


Interoperability and Compatibility
The interoperability risk is low as both Gecko and Webkit have already implemented these changes. Compatibility risk is also low. The resolved value for `border-width` via `getComputedStyle()` will remain 0px when `border-style` is set to `none`/ `hidden`, maintaining backward compatibility. For `outline-width` and `column-rule-width`, both computed and resolved values will show the specified values, as these properties are rarely queried and unlikely to impact existing content. To support the claim, we collected UseCounter data measuring how often these values are queried. The computed‑value counters for these properties are extremely low (<0.0001%). The resolved‑value counters for ‘column-rule-width’ and ‘outline-width’ show ~2.37% usage, which reflects calls to ‘getComputedStyle()’ rather than observable rendering usage. Since ‘getComputedStyle()’ is frequently queried by automated tooling (e.g. scrapers and fingerprinting scripts) that do not depend on property semantics, this usage does not indicate meaningful web‑facing reliance. As a result, the compatibility risk remains low.

Gecko: Shipped/Shipping (https://bugzilla.mozilla.org/show_bug.cgi?id=1998285)

WebKit: Shipped/Shipping (https://bugs.webkit.org/show_bug.cgi?id=304940)

Web developers: No signals

Other signals:

WebView application risks

Does this intent deprecate or change behavior of existing APIs, such that it has potentially high risk for Android WebView-based applications?

No information provided


Debuggability
No extra functionality is needed in Devtools to debug this feature update.

Will this feature be supported on all six Blink platforms (Windows, Mac, Linux, ChromeOS, Android, and Android WebView)?
Yes

Is this feature fully tested by web-platform-tests?
Yes
https://wpt.fyi/results/css/css-backgrounds/animations/border-width-interpolation.html https://wpt.fyi/results/css/CSS2/ui/outline-width-096.xht https://wpt.fyi/results/css/CSS2/borders/border-width-011.xht https://wpt.fyi/results/css/CSS2/borders/border-width-012.xht https://wpt.fyi/results/css/css-ui/parsing/outline-width-computed.html https://wpt.fyi/results/css/css-ui/outline-009.html https://wpt.fyi/results/css/css-ui/animation/outline-width-interpolation.html https://wpt.fyi/results/css/css-multicol/parsing/column-rule-width-computed.html https://wpt.fyi/results/css/css-multicol/parsing/column-rule-computed.html https://wpt.fyi/results/css/css-backgrounds/animations/border-width-interpolation.html

Flag name on about://flags
No information provided

Finch feature name
DecoupleComputedBorderWidthFromStyle,DecoupleResolvedColumnRuleWidthFromStyleEnabled

Rollout plan
Will ship enabled for all users

Requires code in //chrome?
False

Tracking bug
https://issues.chromium.org/issues/393631108

Estimated milestones
Shipping on desktop146
Shipping on Android146
Shipping on WebView146


Anticipated spec changes

Open questions about a feature may be a source of future web compat or interop issues. Please list open issues (e.g. links to known github issues in the project for the feature specification) whose resolution may introduce web compat/interop risk (e.g., changing to naming or structure of the API in a non-backward-compatible way).

No information provided

Link to entry on the Chrome Platform Status
https://chromestatus.com/feature/5133099851317248?gate=5201902006173696

This intent message was generated by Chrome Platform Status.

Mike Taylor

unread,
Jan 22, 2026, 9:21:07 PM (11 days ago) Jan 22
to Chromestatus, blin...@chromium.org, alm...@microsoft.com, kbab...@microsoft.com, mho...@microsoft.com, samome...@microsoft.com

On 1/21/26 1:46 p.m., Chromestatus wrote:

Contact emails
samome...@microsoft.com, kbab...@microsoft.com

Explainer
No information provided

Specification
https://github.com/w3c/csswg-drafts/pull/11913/files

Summary
This proposal untangles ‘border-width’, ‘outline-width’, and ‘column-rule-width’ from their corresponding ‘*-style’ properties. Previously, if a ‘*-style’ property, such as ‘border-style’, was set to ‘none’ or ‘hidden’, the computed ‘*-width’, such as ‘border-width’, would resolve to ‘0px’, even if the width was explicitly set to ‘10px’. Following a resolution in the CSSWG [1], the computed values of ‘border-width’, ‘outline-width’, and ‘column-rule-width’ will now reflect their specified values, regardless of the associated style property's value. Similarly, the resolved values of ‘outline-width’, and ‘column-rule-width’ will now reflect their specified values, regardless of the associated style property's value. [1]: https://github.com/w3c/csswg-drafts/issues/11494#issuecomment-2675800489

Blink component
Blink>CSS

Web Feature ID
No information provided

Motivation
Today, CSS special-cases ‘border-*-width’, ‘outline-width’, and ‘column-rule-width’ so that their computed value becomes ‘0px’ when the corresponding ‘*-style’ is ‘none’ or ‘hidden’, even if the author specified a nonzero width. With Gap Decorations extending ‘column-rule-*’ properties to support lists/repeaters, applying that special-case becomes ambiguous and difficult to define consistently. Having ‘*-width’ values independent of ‘*-style’, provides an intuitive model for these properties and better reflects the author-specified value. 
As a non-CSS expert, can you help me better understand what "applying that special-case becomes ambiguous and difficult to define consistently"? Is this in terms of code that authors would write, or prose for spec authors? An example would be helpful here.

Initial public proposal
https://github.com/w3c/csswg-drafts/issues/11494

Search tags
column-rule-width, border-width, outline-width

TAG review
No information provided

TAG review status
Not applicable

Risks


Interoperability and Compatibility
The interoperability risk is low as both Gecko and Webkit have already implemented these changes. Compatibility risk is also low. The resolved value for `border-width` via `getComputedStyle()` will remain 0px when `border-style` is set to `none`/ `hidden`, maintaining backward compatibility. For `outline-width` and `column-rule-width`, both computed and resolved values will show the specified values, as these properties are rarely queried and unlikely to impact existing content. To support the claim, we collected UseCounter data measuring how often these values are queried. The computed‑value counters for these properties are extremely low (<0.0001%). The resolved‑value counters for ‘column-rule-width’ and ‘outline-width’ show ~2.37% usage, which reflects calls to ‘getComputedStyle()’ rather than observable rendering usage. Since ‘getComputedStyle()’ is frequently queried by automated tooling (e.g. scrapers and fingerprinting scripts) that do not depend on property semantics, this usage does not indicate meaningful web‑facing reliance. As a result, the compatibility risk remains low. 

2.37% of page views is a lot of page views. Why do we feel confident that border-width needs backwards compat considerations for getComputedStyle but column-rule-width and outline-width don't? Are you saying that 2.37% of the use counters are coming from fingerprinting? I'm also not sure what it means for a scraper to trigger a UseCounter - can you clarify? I've typically thought of scraping as a server-side operation - are these web extensions?

thanks!

--
You received this message because you are subscribed to the Google Groups "blink-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+...@chromium.org.
To view this discussion visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/69711ef3.710a0220.3080c5.02c3.GAE%40google.com.

Sam Davis Omekara

unread,
Jan 29, 2026, 5:53:02 PM (4 days ago) Jan 29
to blink-dev, Mike Taylor, alm...@microsoft.com, kbab...@microsoft.com, mho...@microsoft.com, samome...@microsoft.com, Chromestatus, ikilp...@chromium.org, ikilp...@google.com
Hi,

Thanks for the questions. Find below my responses:

  • Question: As a non-CSS expert, can you help me better understand what "applying that special-case becomes ambiguous and difficult to define consistently"? Is this in terms of code that authors would write, or prose for spec authors? An example would be helpful here.
    • Answer: The ambiguity is primarily around spec semantics. Gap decorations extended the column-rule-* properties to accept value lists and `repeat()` patterns. The previous rule (“if style is none/hidden, then computed width is 0”) is straightforward for a single value, but with lists and repeats you no longer have a clean, well-defined way of expressing this behavior. For example, from the CSSWG discussion:
      • column-rule-style: solid dashed none;
      • column-rule-width: 1px 2px; 
    • This cycles to: “1px solid, 2px dashed, (1px) none, 2px solid, 1px dashed, (2px) none …”. 
    • Setting the width to zero in this case depending on the style at any point in the expansion isn’t well-defined.
    • Also, `repeat()` syntax is preserved at computed-value time, which further prevents expanding lists and applying a clean index-based rule:
      • column-rule-style: repeat(2, solid none dashed);
      • column-rule-width: 1px 2px;
    • This would expand to: “1px (solid), 2px (none), 1px(dashed), 2px(solid), 1px(none), 2px (dashed) …” But computed values explicitly do not perform this expansion, so any rule that depends on per-index alignment between style and width cannot be spec'd in a well-defined way.
  • Question: 2.37% of page views is a lot of page views. Why do we feel confident that border-width needs backwards compat considerations for getComputedStyle but column-rule-width and outline-width don't? Are you saying that 2.37% of the use counters are coming from fingerprinting? I'm also not sure what it means for a scraper to trigger a UseCounter - can you clarify? I've typically thought of scraping as a server-side operation - are these web extensions?
    • Why do we feel confident that border-width needs backwards compat considerations for getComputedStyle and column-rule-width and outline-width don’t?
      • `border-*-width` properties are more commonly used and are tied to the box model, so changing what getComputedStyle() returns is more likely to affect existing scripts that compute geometry or layout related behavior. In contrast, outline-width and column-rule-width are less commonly used and are only used for visual decoration so returning the author-specified width rather than 0px should not affect the element’s geometry, making user-visible regressions less likely.
    • On the 2.37%
      • The use counter added was scoped to trigger when the resolved value gotten from getComputedStyle is called on an element where style is none/hidden but width is non-zero. While 2.37% is high we believe the traffic is dominated by:
        • Fingerprinting/Telemetry scripts that typically iterate over every CSS property to build a unique “fingerprint” of the browser.
        • Generic serializers that read all styles to copy/paste or inspect elements
      • The default for these properties is *-width: medium and *-style: none. This is also a contributing factor to this high percentage. So even if a site doesn’t explicitly set these values and is being scraped, by virtue of the defaults, the counter will get hit.
      • On scrapers being server side
        • In recent times, we’ve seen scrapers be headless browser automation like Puppeteer or Selenium or client-side scripts in real browsers. They can execute Javascript and call getComputedStyle which in this case would expect the counter to be hit.
          These tools often query hundreds of properties which signals that a high query rate does not necessarily imply meaningful web-facing dependence on the current behavior.
      • Also, we are not first movers in this case, Webkit and Gecko have shipped this.
      • + ikilp...@google.com for more details on this.

Alex Russell

unread,
3:05 PM (7 hours ago) 3:05 PM
to blink-dev, Sam Davis Omekara, Mike Taylor, alm...@microsoft.com, Kevin Babbitt, mho...@microsoft.com, Chromestatus, Ian Kilpatrick, ikilp...@google.com
Why would scrapers opt into metrics reporting? Seems an unlikely explanation for elevated use. Do we have other views onto it, e.g. from Edge histograms?

Best,

Alex

Reply all
Reply to author
Forward
0 new messages