- From: Dael Jackson <daelcss@gmail.com>
- Date: Wed, 28 Sep 2022 19:40:06 -0400
- To: www-style@w3.org
- Cc: public-aria@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 Flexbox & Grid
------------------
- RESOLVED: Draft reading-order (minus source value) into
css-display-4 ED (Issue #7387: Providing authors with a
method of opting into following the visual order, rather
than logical order)
CSS Flexbox
-----------
- RESOLVED: Flex baselines take flex ordering into account so first/
last use roughly *physical* directions (Issue #7776: Flex
container baselines with reverse direction)
- Issue #7774 (Flex container baselines with "flex-wrap:
wrap-reverse" present) requires clarifying edits that you should
be using writing-mode order.
CSS Sizing
----------
- RESOLVED: Last remembered size uses the "stitch together in block
axis" bounding box (Issue #7598: Last remembered size
when fragmented?)
===== FULL MINUTES BELOW ======
Agenda: https://lists.w3.org/Archives/Public/www-style/2022Sep/0016.html
Present:
Rachel Andrew
Jake Archibald
Rossen Atanassov
Tab Atkins
David Baron
Oriol Brufau
James Craig
Yehonatan Daniv
Elika Etemad
Robert Flack
Bryan Garaventa
Chris Harrelson
Brad Kemper
Jonathan Kew
Ian Kilpatrick
Peter Linss
James Nurthen
Florian Rivoal
Khushal Sagar
Alan Stearns
Miriam Suzanne
Regrets:
Daniel Holbert
Chair: Rossen
Scribe: jcraig
<RRSAgent> logging to https://www.w3.org/2022/09/28-css-irc
CSS Flexbox & Grid
==================
Providing authors with a method of opting into following the visual
order, rather than logical order
-------------------------------------------------------------------
github: https://github.com/w3c/csswg-drafts/issues/7387
<chrishtr> Welcome ARIA!
rachelandrew: Several requests over the years
rachelandrew: css says stick with document order... works in most
cases
rachelandrew: but with grid in particular, can be a disconnected from
the sighted focus or AT, screen reader...
rachelandrew: My initial proposal, can the author opt in to "visual"
order instead of Dom/source
rachelandrew: fantasai proposed a more refined order
<fantasai> my proposal Rachel mentions is here:
https://github.com/w3c/csswg-drafts/issues/7387#issuecomment-1217193918
<fantasai> rachel's use case analysis is here:
https://github.com/w3c/csswg-drafts/issues/7387#issuecomment-1248754496
rachelandrew: so we need a way to define reading order if not logical
in the DOM
scribe: fantasai
scribe's scribe: jcraig
chrishtr: Specific proposal from fantasai on August 16th (see above)
chrishtr: candidate for resolution
chrishtr: affects focus order and reading order simultaneously
jamesn: Just want to confirm it's for grid/flex, not abspos etc?
rachelandrew: Yes, you can get disconnected order in abspos
rachelandrew: but I don't see people building entire layouts using
abspos
rachelandrew: things like grid-auto-flow: dense are cases where the
won't know where things are
rachelandrew: so scoping down
<TabAtkins> They are reordering, *and* we have a reliable way of
knowing the order they're producing (as opposed to abspos/
floats).
jamesn: Support scoping down, just wanted to confirm
iank: Question, in flexbox there's various mechanisms to switch the
order
iank: e.g. flex-wrap: reverse
iank: would this affect that as well?
rachelandrew: I think so, should behave similar way as when you have
one of the grid values that allows reordering
iank: if logically it looks like you're following the different order
iank: but worth coming up with use cases to check
<TabAtkins> Yes, I think they'd also reorder per the reading order of
the writing mode on the element, I'd think.
* fantasai disagrees actually
Rossen: fantasai, can you give an overview of the proposal?
Rossen: particularly effects on flex/grid and also on abspos
Rossen: if mostly reviewing, don't need thorough minuting
<fantasai> https://github.com/w3c/csswg-drafts/issues/7387#issuecomment-1217193918
fantasai: Reviewing this proposal to add a reading order property
with values: source (DOM), auto, default, would follow
rendering order but not in cases that authors could not
predict. final value: an integer that affects keyboard order
fantasai: Could also use it differently than the order property....
or use reading order in layout mode... so abspos elements
reading order could be modified by the order value.
fantasai: IMO author predictable layout methods should not be covered
by auto... maybe a different keyword, but not by default
fantasai: e.g. if you're reversing the order, that doesn't mean there
is no order,. should follow the layout.
Rossen: How does this impact reading order vs focus management
fantasai: Randomizing layout models indicate that the underlying
order of the items doesn't matter, so in this case we want
the UA to make the reading order match the visual order.
fantasai: but if it's not randomizing, the source potentially has
meaningful order and we should preserve that unless
specifically overridden by the author
fantasai: reading order vs focus management... different ways to
manipulate the default.... linear forwards or backwards
fantasai: linear order is an artifact of the @@@ order
fantasai: there should not be a disconnect between the order we
choose for the reading order and the focus order
Rossen: suppose I have items with tabindex, I swap the visual order,
what happens
fantasai: interaction with tabindex needs defining... explicit
tabindex should be respected
<chrishtr> +1 to tabindex taking precedence
iank: Property does 2 things, work at different levels
iank: e.g. reading-order, works at the container level
iank: I think it's a mistake to also bundle the 'integer' variant on
top of that
iank: it seems to me that it operates on the item instead
iank: so if we want the integer variant, that should likely be a
separate property
fantasai: Think of the value similar to z-index: auto versus integer
iank: Would then need to set on every item?
fantasai: I see that's an unsolved issue... integer versus auto can't
be resolved at the element level
fantasai: Could drop the source value unless someone really wants it
fantasai: Could be useful as separate properties in case you want to
define them independently
iank: Are valid use cases for source order
iank: core use cases for column-reverse is chat bubbles that
propagate upwards
iank: but you're saying that doesn't affect it ...
iank: I think I'll need to see all the interactions written down
iank: before I can evaluate it as a whole
iank: lots of subtle interactions here
jcraig: I agree lots of subtleties in the layout examples
jcraig: Some of the other subtleties mentioned last night are what's
supposed to happen to either a keyboard user's focus or an AT
user's focus, such as screenreader
jcraig: not detectable
jcraig: What happens when the order changes on the fly?
jcraig: Use cases were based on dynamic interaction of values of
these orders might change
jcraig: What happens to the users keyboard focus or AT focus, when
metaphorical rug gets pulled out?
jcraig: If JS interaction, author should maybe call .focus() after UI
modification
jcraig: but in this case, not a CSS method for doing this
jcraig: do we expect this to be primary rendering layout in CSS and
then need to follow up with focus method afterwards?
jcraig: or other interactions?
jcraig: can change
fantasai: Focus should stay on the same element. But its relative
order to other elements around it
fantasai: Only have a problem if you remove the element you're on
jcraig: Afraid there's some unpredictable cases, e.g. you tab through
and get stuck in a loop
jcraig: so interactions where we might not be able to rely on it
jcraig: could maybe get a good default
jcraig: when that happens, maybe call focus()
jcraig: I'm just worried about a layout method that changes
reading/kb/AT order not tied to a JS call (e.g. focus()) that
would not to be used to correct it
rachelandrew: In terms of having all of the likely combinations that
might want to assess, would it be helpful for me to do?
rachelandrew: Discussed with Chrome DevRel
rachelandrew: would it be helpful to come up with the different
combinations of things are that people could see this
being used for?
jcraig: that would be great
chrishtr: I suggest possible resolution, in general this is a good
idea, need to work out the details, so go work it up in a
draft spec
jcraig: happy to work on the list with rachelandrew
jcraig: and try to throw in as many AT challenges as I can
fantasai: Suggest drafting into css-display-4
fantasai: (which doesn't yet exist)
<chrishtr> display-4 SGTM
fantasai: then we can work on details, evaluate, and decide if we
like it
Rossen: Opinions from others?
BGaraventa: I do agree with what you've been talking about, just read
through the bug, and there are some things I'm not
familiar enough that I can't provide info on, but like
idea of moving this
BGaraventa: One scenario is that basically curious how it works with
ARIA widgets, e.g. listbox that has options
BGaraventa: style various list items, once you add aria roles to it
[missed]
BGaraventa: I'd be happy to be part of future discussion if that's
helpful
Rossen: Thanks, helpful
Rossen: Anything else on this topic?
Rossen: We have concrete direction
Rossen: Talked about this in 2015, glad to see we've got a direction
here
RESOLVED: Draft reading-order (minus source value) into
css-display-4 ED
<rachelandrew> thanks all, I'll start a list and ping people to
contribute
Rossen: Ok, back to our regularly scheduled CSS topics. ARIA folks
are welcome to stay or leave
CSS Nesting
===========
FPWD of css-nesting-1
---------------------
chrishtr: Apparently already in FPWD
CSS Flexbox
===========
Scribe: TabAtkins
Flex container baselines with reverse direction
-----------------------------------------------
github: https://github.com/w3c/csswg-drafts/issues/7776
iank: At TPAC we did a bunch of baseline stuff
iank: Today, if we have flex-direction:*-reverse, we will take the
first baseline from the first in DOM order, the "logical" first
iank: this is interoperable across all browsers
iank: The spec doesn't say this, I believe it says to take
flex-direction into account, which means browsers are all wrong
today
iank: We're willing to make this change, I don't have strong opinions
fantasai: I think the spec change makes sense, if you ask for
last-baseline you want the baseline at the bottom, not the
top
fantasai: So I think that makes the most sense
iank: It'll likely be compatible
iank: One possible case is people doing column-reverse and having
overflow propagate things upwards, so the "first" thing will be
way up in the overflow area and get clamped to the block-start
edge
fantasai: They're probably not asking for baseline alignment in these
cases, so probably fine?
iank: Yup, just a subtle side effect, I'm fine with it
<TabAtkins> I'm fine with this.
RESOLVED: flex baselines take flex ordering into account so first/
last use roughly *physical* directions
Flex container baselines with "flex-wrap: wrap-reverse" present
---------------------------------------------------------------
github: https://github.com/w3c/csswg-drafts/issues/7774
iank: Similar to the last, but I don't think this is in the spec
currently
iank: You can have flex: row wrap-reverse, so the lines are inverted
iank: Currently impls will take the last baseline from the visually
last line
fantasai: I think this is basically the same as the previous, and the
spec says "startmost" or "endmost", so that's already in
spec
TabAtkins: startmost and endmost have strict meanings
<fantasai> https://github.com/w3c/csswg-drafts/issues/995
fantasai: Actually I think it's somewhat unclear, "start" is a little
ambiguous with "flex-start" in Flexbox
fantasai: So we should do some clarifying edits
fantasai: But yeah, if we're accounting for flex-direction we should
absolutely do flex-wrap as well
fantasai: they're together
fantasai: So we should make sure the spec is clear about this
fantasai: Might have forgotten to clarify that it was a flex vs
writing mode
fantasai: I think it's clear that you do both of them with the same
set of directions, the spec just isn't entirely clear that
you should be using writing-mode order rather than flex
order
<fantasai> "RESOLVED: take the visually first line when considering
baseline alignment in flexboxes"
<fantasai> from the issue
<TabAtkins> (I disagree and think it's correct as is, but am fine
with making it more explicit)
CSS Sizing
==========
Last remembered size when fragmented?
-------------------------------------
github: https://github.com/w3c/csswg-drafts/issues/7598
oriol: Continuing discussion
oriol: What size to record as last remembered size when there's
multiple fragments?
oriol: In discussion, preferred behavior was taking all frags into
account, but we weren't sure if that was possible
oriol: The ResizeObserver API supposedly only returned the first
fragment size
oriol: but in Blink, while a single size is exposed, it's not the
first fragment size as the spec says; instead it's the sum of
the block sizes of the fragments
oriol: So perhaps by accident, the last remembered size is behaving
as we desired in blink already
oriol: So I implemented a way in RO to track size per fragments, not
enabled yet but used by last remembered size
oriol: So impls have this behavior we thought was better in
discussion, so I think we can resolve on this
oriol: Precisely, the last remembered block size will be the sum of
the fragment block sizes, while last remembered inline size is
the max of the fragment inline sizes
(As if pasting all the fragments together block-wise, then
taking bounding box)
<iank> that sounds good to me - its a long standing issue that we
aren't taking the max.
Rossen: I'm assuming that, without knowing current impl, what we used
to have in Edge especially for variable-size frags was we
used bounding box of all fragments as the size
Rossen: What I'm hearing is matching that
TabAtkins: No, that's not right
TabAtkins: The summary that I put in is right, it's as if you too all
the fragments, pasted them together, and then took the
bounding box
TabAtkins: not take the bounding box as they exist on the page
Rossen: That's what I meant to say
oriol: [missed, something about columns]
iank: This sounds good to me
iank: Note that we need to ignore repeated things like table headers
fantasai: Do we?
Rossen: And box-decoration?
iank: Repeated table headers, for example, if you take the stitched
size...
iank: the table header won't vary between the fragmentainers
iank: So if you have a repeated frag you just want to take the first
iank: It's an edge case tho
Rossen: What about border-decoration:repeat?
Rossen: Are you ignoring the borders along the slices?
<bradk> box-decoration: clone
oriol: Re: decos, we're remembering content size, so it's not
including the borders
oriol: Re: tables, the last remembered size is only used when the
element has size containment, and I think tables can't have
size containment so it doesn't matter in practice
Rossen: Stepping back, proposal sounds good. Think there will be some
details as we implement.
Rossen: But I think the path forward sounds good
Rossen: Thoughts or objections?
RESOLVED: Last remembered size uses the "stitch together in block
axis" bounding box
fantasai: We've had interesting conversations about ResizeObserver
fantasai: Many inconsistencies between planned and implemented
fantasai: Who's working on this?
TabAtkins: ResizeObserver has new editors
oriol: I can try to drive something to make the spec handle different
fragments, like what I implemented in Firefox
oriol: But there are unclear details
fantasai: We also have a previous discussion, maybe from A Coruna,
about this?
oriol: I think we have a resolution that API should extend to expose
fragments, it's just not clear how to do so in some cases
fantasai: Think we discussed an array of fragments, we just didn't do
that in first version because it shipped before review
oriol: Yes, impl currently returns an array that has 1 item, in FF
it's the first...
Rossen: Wait is this part of the topic?
fantasai: My point is just that we're basing decisions on
ResizeObserver but ResizeObserver is shaky, and we haven't
followed up on resolutions we made for ResizeObserver.
oriol: emilio
oriol: is the new editor
oriol: I added some RO issues to the agenda, hopefully we can handle
those
oriol: I can try to change the spec to handle fragments
<fantasai> Having the first item in the array be the sum of all
fragments makes *no sense*
<fantasai> Either it's not an array and it's the sum of all
fragments, or its an array of multiple items each
representing a fragment
Rossen: Ok, please do that and raise issues if there are any new
questions
Received on Wednesday, 28 September 2022 23:40:45 UTC