- From: Dael Jackson <daelcss@gmail.com>
- Date: Wed, 28 May 2025 19:46:21 -0400
- To: www-style@w3.org
=========================================
These are the official CSSWG minutes.
Unless you're correcting the minutes,
please respond by starting a new thread
with an appropriate subject line.
=========================================
CSS View Transitions
--------------------
- RESOLVED: Start specifying element-scoped view transitions in view
transitions L2 (Issue #9890: Element-scoped view
transitions)
- RESOLVED: Add ::view-transition-group-children() (open to better
names), and copy border-sizing properties to it (Issue
#11926: Nested ::view-transition-group should have a
container pseudo)
CSS Conditional
---------------
- RESOLVED: Scroll state queries against the root match the scroll
state of the layout viewport (Issue #11542: Match
scroll-state(scrollable) for root element on viewport)
- RESOLVED: Scroll state containment on root element blocks overflow/
scroll-related propagation from the BODY element (Issue
#11542)
CSS Borders
-----------
- RESOLVED: Add corner-shape to the border-radius clause in outline
definition (Issue #12194: Specify how `corner-shape`
affects `outline`)
===== FULL MEETING MINUTES ======
Agenda: https://lists.w3.org/Archives/Public/www-style/2025May/0022.html
Present:
Rachel Andrew
David Awogbemila
Kevin Babbitt
David Baron
Justin Breiland
Keith Cirkel
Emilio Cobos Álvarez
Yehonatan Daniv
Elika Etemad
Robert Flack
Mason Freed
Simran Gill
Paul Grenier
Daniel Holbert
Jonathan Kew
Roman Komarov
David Leininger
Vladimir Levin
Rune Lillesveen
Alison Maher
Romain Menke
Florian Rivoal
Noam Rosenthal
Alan Stearns
Josh Tumath
Sam Weinig
Regrets:
Tab Atkins-Bittner
Oriol Brufau
Chris Lilley
Miriam Suzanne
Bramus Van Damme
Lea Verou
Scribe: emilio
Scribe's scribe: fantasai
CSS View Transitions
====================
Element-scoped view transitions
-------------------------------
github: https://github.com/w3c/csswg-drafts/issues/9890
noamr: view transitions are shipping in multiple browsers
noamr: a big feature request has been having them element-scoped, so
that they don't have to lock the whole document, and you can
have multiple of them altogether
noamr: started prototyping it, lots of open issues
noamr: wanted to introduce the basics
noamr: and see if we can resolve adding it as a draft with everything
else as open issues
noamr: what we want to add is not just the document can start a VT,
but also on Element
noamr: the pseudo-elements are attached to the element rather than
document
noamr: lots of open issues, need to figure out what to do if the
element changes size, how the name resolution works, ...
noamr: we feel confident enough that we can go forward and wanted to
see if the WG is fine with adding a draft with the skeleton of
this
emilio: Is the main requested use case having multiple transitions at
the same time, or keeping the document responsive etc.?
emilio: Having multiple of them doesn't seem untenable either
emilio: multiple document-level ones I mean
emilio: though it would require some coordination
emilio: but, wondered about extending the document one rather than
adding nesting ones
emilio: can sidestep some of these issues
emilio: wanted to hear your thoughts; not opposed to this
noamr: Those difficulties are the feature in a way
noamr: we want to make this work in shadow dom and not worry about
document-level things interacting
emilio: Wondering, if you want to do some sort of independent
transition, don't want to coordinate with everything that
might start a transition
emilio: but that seems solve-able in a way, with the current setup
emilio: you add a scope parameter to the document.startViewTransition
emilio: for that transition, you only scan for transitions in that
subtree
emilio: only snapshot in that subtree
emilio: very similar to element.startVT but uses document
infrastructure
emilio: thing you don't want is to depend on things changing around
emilio: I'm assuming the eventual setup will be similar
emilio: so maybe it's fine ...
emilio: but wondering how much you had considered that
noamr: We had, but let's add to open issues
noamr: easier to discuss individually
emilio: sure
noamr: Once we have a draft we can address things more piecemeal
astearns: How are these element-scoped transitions going to interact
with document-level, does one win over the other?
noamr: open issue, but names can't conflict at least, and there'd be
some sort of contained view transition name to separate
internal names
noamr: in general you should be able to run both as long as names are
not conflicting, external one would use the output of the
scoped one
noamr: think about a `<video>` or another replaced element
astearns: vague concern about having a subset of the pages being
transitioned having rendering and hit-testing suppressed
astearns: something about spoofing clicks and what not
astearns: but I don't have a specific attack in mind
noamr: separate open issue about hit test suppression
noamr: the scoped element itself would receive hit testing, just the
internal elements wouldn't
astearns: view-transitions L3?
noamr: really rather not add another one
noamr: I'd suggest keeping at L2 and if other impl requests it we can
reduce its scope
fantasai: wrt levels seems one of the interesting things is working
out how these things correspond to each other
<fantasai> https://drafts.csswg.org/css-view-transitions-2/#changes
fantasai: would be helpful to list additions from L1 to L2
fantasai: other than view-transition-class is there anything not
related to nesting/scoping?
noamr: all the cross-doc stuff
noamr: actually a lot of kitchen-sink things
fantasai: gotcha
fantasai: if we end up splitting L2 might make sense to keep
kitchen-sink in L2 and move nesting and scoping stuff
with L3
noamr: wanted to merge L1 and L2
emilio: +1 to merging L1 and L2
astearns: other concerns?
RESOLVED: Start specifying element-scoped view transitions in view
transitions L2
Nested ::view-transition-group should have a container pseudo
-------------------------------------------------------------
github: https://github.com/w3c/csswg-drafts/issues/11926
vmpstr: we discussed this in the context of nested view-transition
groups
vmpstr: to add a container to the nested groups
vmpstr: with the purposes of clipping the nested groups
vmpstr: bunch of discussions on how to accomplish that
vmpstr: for the purposes of unblocking I'd like to split some
resolutions
vmpstr: so (1) we need a new element, (2) naming and (3) sizing
vmpstr: proposal is to size it so that if we apply a clip you make
the clip apply as in the original element
vmpstr: so size it to border-box and set border-color: transparent
and copy border* properties (border-width/border-box/
overflow-clip-margin)
vmpstr: that way if the author decides to apply a clip it'd clip the
same way as the original element
vmpstr: noamr had a different proposal, to take the original
element's clipping-region, and turn it into a mask, and apply
that mask on top
vmpstr: that may work in some cases better than this copying, but is
more complicated
vmpstr: so I'd prefer to resolve on copying the border props
vmpstr: and then open an issue to the mask
vmpstr: I'd like some resolutions to get some early version of this
into developers
vmpstr: none of the solutions are ideal
fantasai: so what we have right now is group() and image-pair()
fantasai: and we need another?
fantasai: why do we need a separate group() and image-pair()?
vmpstr: we want to nest things from other elements within this group
vmpstr: naively those would be siblings of the original group
vmpstr: which you wouldn't clip the children
vmpstr: so that it wouldn't affect the clipping of the image-pair
fantasai: remind me why we added the image-pair()
vmpstr: for isolation, we blend old+new with plus-lighter
fantasai: so generally we don't recommend authors to style the
image-pair()
fantasai: just pretend it doesn't exist?
vmpstr: that is the case in my experience
fantasai: wanna make clear in the spec that authors should style
group()
fantasai: so if the author creates a transition between old/new
versions of the grouping element, where the border is
transitioning as step() rather than smooth, would this
copied version of the border track that?
fantasai: or would it end up unsynchronized?
vmpstr: so you mean the transition step() is the new/old() ones?
vmpstr: I don't think it'd be synchronize
vmpstr: in the simple case old/new they cross-fade to the other, so
it doesn't animate borders, it blends the pixels
vmpstr: you can't cross-fade clips
vmpstr: with the mask approach you could cross-fade the masks I guess
vmpstr: but even in the default case it might not be great
flackr: I'm supportive of the idea
flackr: if we don't need to customize this we might want this to be
internal in order to change the mechanics?
vmpstr: I think that's very magical
vmpstr: something's clipping this but there's nothing there
vmpstr: it's maybe an option
vmpstr: maybe too magic for my taste
emilio: Seems to me splitting resolution, allow new pseudo
<flackr> emilio: Good idea to split resolutions. I thought default
was not clipping.
emilio: naming, I don't care very much
emilio: specifics of sizing and stuff is the tricky thing
emilio: I'd rather keep it simple and let authors use clip-path etc.
emilio: especially if default case won't be great
emilio: If you need to clip with rounded rect with border, you could
use clip-path or something else
emilio: should also work in the negative direction
emilio: seems like at least the first resolution would be
uncontroversial, and would help make progress
vmpstr: unfortunately bramus not on the call
vmpstr: happy to resolve on adding pseudo+name for now then see if we
can resolve further
flackr: Please resolve on adding the pseudo, but we need the border
on it because the position of the descendants depends on
having a border
flackr: if developers added that border it'd shift all the
descendants so we need the border size as part of the copied
props
<vmpstr> +1
emilio: would it though?
emilio: The groups are absposes, right?
emilio: and I guess the idea is that the group would always be the
containing block of these? but aren't we using transform to
position and size these?
flackr: yes but it's relative to the content
emilio: Isn't that how all other view transition pseudos work?
emilio: Doesn't it mess things up if you add a border to
::view-transition-group today?
flackr: Yes, but you would add this border to replicate the original
clip, but by adding border you would screw up the positions
of the elements
vmpstr: You wouldn't add the borders on the group element itself,
because captured the pixels that overflow the border box
vmpstr: not a typical use case
emilio: right, but you might not need a border
emilio: but ok, I guess, do other things affect padding vs border box?
emilio: does border-image do something weird?
noamr: no, only border-width really
vmpstr: I'd like to leave this a little open, as in anything that
does affect it
vmpstr: if other things affect, we can add them
emilio: I guess it's ok? It feels weird to account for existing
borders in this pseudo.
emilio: idea would be to change how positioning of inner things work,
to account for the border, right?
emilio: but maybe we can fix it more generally, so that if you add a
border to any of these pseudo-elements...?
emilio: I guess it's hard to know beforehand
emilio: The inconsistency with all the other grouping pseudoes
bothers me
emilio: also copying the border-width is not too terrible
emilio: I guess you also need to set border-style...
vmpstr: we can possibly copy border-{width,style}, set border-color
to transparent
vmpstr: Yes, we can possibly copy border-width and border-style, and
set border-color to transparent if it was set to something on
the original element
vmpstr: border-width might not have an effect depending on the rest
of the styles
vmpstr: details tbd but the idea would be to keep the border area
without drawing the border
astearns: think I'm hearing consensus of adding the pseudo and maybe
giving a name
vmpstr: would like to resolve on copying something details tbd
vmpstr: content-area-affecting properties like border-width, maybe
border-shape-affecting props like border-radius
astearns: proposed name?
vmpstr: `view-transition-nested-groups()`?
`view-transition-nested-content()`?
vmpstr: no particularly strong naming
<flackr> +1 to content
<fantasai> view-transition-group-children?
emilio: content sounds better for some reasons, but you also want the
padding area. nested-content seems fine. fantasai's
suggestion also seems fine
fantasai: I think none are particularly great
fantasai: I don't like nested content because a lot of the content is
going to be captured outside
<noamr> view-transition-content-area?
vmpstr: view-transition-group-children or content-area?
fantasai: children seems slightly better because it distinguishes the
image-pair
fantasai: content-area is weird because you want the padding
vmpstr: let's not reference specific boxes, and do
view-transition-group-children?
PROPOSED: add ::view-transition-group-children() (open to better
names), and copy border-sizing properties to it
fantasai: Want to propose clarifying the spec with the suggestion to
style ::group() and not ::image-pair
<fantasai> ACTION: Clarify L1 to encourage styling ::group() and not
::image-pair()
<RRSAgent> records action 1
RESOLVED: Add ::view-transition-group-children() (open to better
names), and copy border-sizing properties to it
Match scroll-state(scrollable) for root element on viewport
-----------------------------------------------------------
github: https://github.com/w3c/csswg-drafts/issues/11542
futhark: for scrollable feature, which queries whether something is
scrollable in that direction
futhark: so wanted to clarify that if the root element is a
scroll-state container we should evaluate the scroll state
against the viewport
futhark: similar to scroll-snap-type
futhark: I thought this was straight-forward but tab/miriam had some
comments, where they want to fall back to the viewport
futhark: basically if you set the scroll-state in the root it stops ??
futhark: also if you contain scroll state queries with style queries
we don't have a definition for them on the viewport
futhark: TabAtkins and miriam are not around, maybe fantasai does
have opinions?
flackr: just to clarify, we want the layout viewport right?
flackr: as it shouldn't change when you pinch-zoom
<fantasai> +1
<emilio> +1
flackr: I think from the issue we have a lot of precedent for the
root element representing the layout viewport
flackr: overscroll-behavior and so on
flackr: I think resolving that we handle this if you make the root a
scroll container makes sense
futhark: makes sense, we also have the same proposal of falling back
to the viewport for size queries
fantasai: making the root work this way makes sense. Having viewport
just work seems it'd be a separate thing and more work
probably
fantasai: in the meantime we can make this work
emilio: Makes sense. one of the tricky things wrt making viewport
just work is that root element is inside the viewport, but
can technically affect it, so wouldn't that be cyclic?
emilio: brings me to my next point, which is, if you make root a
scroll container
emilio: scroll-state container
emilio: we should not propagate overflow from the body, because that
would be cyclic
emilio: by default we do that
futhark: this has been resolved, for size queries we don't propagate
across containers
futhark: we don't propagate from body to viewport if root is a size
container
futhark: you were mentioning cyclic problems
futhark: even if the scroll state query matches the viewport you
wouldn't be able to match it, you could only style the
viewport
futhark: the spec says something about size queries, we might need
something to be added for scroll queries
fantasai: right, you'd be querying the scrollport of the viewport but
the root would be conceptually the container
<flackr> +1
fantasai: I think there's several things to resolve...
fantasai: scroll state queries against the root match the viewport
fantasai: the layout viewport
fantasai: this type of containment blocks scroll propagation from the
body
emilio: That matches my understanding as well
<fantasai> PROPOSED: Scroll state queries against the root match the
scroll state of the layout viewport
<emilio> +1
<flackr> +1
RESOLVED: Scroll state queries against the root match the scroll
state of the layout viewport
<fantasai> PROPOSED: Scroll state containment on root element blocks
overflow/scroll-related propagation from the BODY element
<flackr> +1
<emilio> +1
RESOLVED: Scroll state containment on root element blocks overflow/
scroll-related propagation from the BODY element
CSS Borders
===========
Specify how `corner-shape` affects `outline`
--------------------------------------------
github: https://github.com/w3c/csswg-drafts/issues/12194
noamr: there was a question about how does corner-shape matches
outline. Current spec is not interoperable, rather handwavy
noamr: spec says it generally should follow the border
noamr: should I continue that path for border-shape?
noamr: following the border
noamr: should we try to make that interoperable?
florian: I think short term is to extend the current spec
florian: going beyond it is a big project, there are a lot of other
issues with outline
florian: defining would be a good project but a big project
[missed]
emilio: we have the magic thing, which is outline-style: auto
emilio: for easy cases we can more easily define
emilio: handwaving fragmentation cases can be fine
emilio: agree we shouldn't need to fix everything
emilio: but let's get interop on some cases
florian: two resolutions
florian: 1. Follow corner-shape
florian: 2. WG will attempt to outline in more detail
florian: we don't have a definition, but we can try
emilio: the non-auto cases seem pretty definable
florian: definable, but is not currently defined
florian: I used to have an art gallery of interesting outline
rendering, so there is a lot to define!
astearns: Out of time, but I think it sounded like we have consensus
to at least add corner-shape to the bit that defines how we
deal with border-radius
astearns: add it to that vagueness, and perhaps a note to better
specify this later
noamr: sgtm
florian: I agree with the direction, probably issue rather than note
though
noamr: open a separate issue
PROPOSED: Add corner-shape to the border-radius clause in outline
RESOLVED: Add corner-shape to the border-radius clause in outline
definition
Received on Wednesday, 28 May 2025 23:46:53 UTC