Re: [csswg-drafts] [css-view-transitions-2] [scoped] What is the layout of the ::v-t pseudo in relation to the scope? (#12324)

I have been trying to understand the resolution in https://github.com/w3c/csswg-drafts/issues/12324#issuecomment-3530620798 via discussion with @flackr and @vmpstr. Our current interpretation I believe is as follows:

* The WG raised a concern that if the `::v-t` is an abs-pos sibling of the scope then it can escape ancestor clips in ways the scope itself does not. This is a valid concern that I had not thought of before. I made some quick demos to prove this to myself: [sibling](https://output.jsbin.com/capeduw/), [child](https://output.jsbin.com/rijetor/).
* Based on such concerns the new plan is to not use anchor positioning but go back to having the `::v-t` pseudo be a layout-tree child of the scope, absolutely positioned with `inset: 0`.
* Despite being laid out as a child the `::v-t` pseudo will have some "magical" sibling-like behaviors that ordinary DOM children don't have:

(1) It is painted on top of everything else in the scope, including higher z-index children.
(2) It is not affected by the scope's scroll offset, if the scope is a scroller.
(3) It is not affected by clips or effects set on the scope itself(?)

I think the idea of an abs-pos child of a containing-block scroller where the child is not affected by the scroll offset may be a brand new concept (for Chromium requiring adjustments to hit testing / geometry mapping logic as well as scroll tree construction). Note that scopes are always containing blocks since we apply `contain: layout` during transition ([crbug.com/434895697](https://crbug.com/434895697)).

-- 
GitHub Notification of comment by skobes-chromium
Please view or discuss this issue at https://github.com/w3c/csswg-drafts/issues/12324#issuecomment-3554010585 using your GitHub account


-- 
Sent via github-notify-ml as configured in https://github.com/w3c/github-notify-ml-config

Received on Wednesday, 19 November 2025 18:04:51 UTC