[CSSWG] Minutes Telecon 2023-02-22 [css-contain] [css-sizing] [css-text] [css-ui]

=========================================
  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 Contain & Sizing
--------------------

  - RESOLVED: content-visibility: auto forces contain-intrinsic-size
              to gain an auto value, and we'll define that auto value
              for contain-intrinsic-size so it works with all the
              current values, and then make sure that the last
              remembered size is forgotten when contain-intrinsic-size
              changes (specifying where in rendering step it happens)
              so we can deal with the cases that Rob brought up.
              (Issue #8407: Behavior of slightly offscreen content
              having `content-visibility:auto` and
              `contain-intrinsic-size` when UA margin around the
              viewport is 0)

CSS Text
--------

  - RESOLVED: Rename `text-space-collapse` back to
              `white-space-collapse` (Issue #8273: Renaming
              text-space-* to white-space-*)

CSS UI
------

  - RESOLVED: outline-style: auto outlines, if influenced by an author
              color, are influenced by outline-color, which itself
              gets a new initial value keyword 'auto' which computes
              to 'currentColor' when outline-style is not auto and
              otherwise represents the 'accent-color' (Issue #7761:
              Tweaking outline-style: auto colors)
  - Tests will be run to define exactly what implementations do
      currently for issue #7700 (Align canonical order of `outline`
      sub-properties with `border`) to help drive a resolution.

===== FULL MEETING MINUES ======

Agenda: https://lists.w3.org/Archives/Public/www-style/2023Feb/0011.html

Present:
  Rachel Andrew
  Tab Atkins
  David Baron
  Tantek Çelik
  Emilio Cobos Álvarez
  Yehonatan Daniv
  Elika Etemad
  Robert Flack
  Simon Frazer
  Mason Freed
  Paul Grenier
  Chris Harrelson
  Daniel Holbert
  Chris Lilley
  Peter Linss
  Alison Maher
  Eric Meyer
  Alan Stearns
  Miriam Suzanne
  Bramus Van Damme

Regrets:
  Lea Verou

Chair: astearns

Scribe: dbaron

  astearns: Hoping to get dates for extra meetings nailed down this
            week, but don't need meeting time for it.
  astearns: Any changes to agenda?

CSS Contain & Sizing
====================

Behavior of slightly offscreen content having `content-visibility:auto`
    and `contain-intrinsic-size` when UA margin around the viewport
    is 0
-----------------------------------------------------------------------
  github: https://github.com/w3c/csswg-drafts/issues/8407

  jihye: This issue is related to `content-visibility: auto` and
         `contain-intrinsic-size`.
  jihye: It's an edge case. It's a problem for both Firefox and Chrome.
  jihye: If the UA margin is set to 0, and the content is specified
         with `content-visibility: auto` and
         `contain-intrinsic-size`... if this content is slightly
         offscreen, as a result the content flashes.
  jihye: I would like to have a resolution on 2 major questions:
  jihye: 1. Is this kind of flashing reasonable... what is the
         expected result? Flashing or stable?
  jihye: 2. If the result should be stable, what is the final result
         that is shown?
  jihye: My opinion is that for (1) the result should be a stable
         layout because I understand the purpose of
         `content-visibility: auto` with `contain-intrinsic-size` is
         to improve rendering performance, so this kind of flashing
         result decreases performance. I think stable layout is better.
  jihye: My opinion for (2) is that I want to pursue a way that
         improves rendering performance, so keeping the offscreen
         element offscreen would be a reasonable result, but I'm not
         sure how to define that. So I discussed this the github issue
         with Oriol, and we discussed whether we can define a new
         description of "maybe relevant". I'm not sure how to define
         this, need more opinions.

  Oriol: I agree we should try to achieve a stable layout... when
         setting content-visibility to auto we could say
         contain-intrinsic-size automatically gets the auto keyboard.
         (missed) So it would keep a stable size and stop flickering
         between two sizes.
  Florian: I think it's a good solution, satisfies the expectation
           that Jihye had.
  TabAtkins: I support Oriol's proposal as well.
  Oriol: Then there's a detail: the `auto` keyword of
         `contain-intrinsic-size` can only be mixed with lengths, but
         the initial value is `none`. So we'd need to add the `auto
         none` combination.
  TabAtkins: Want to look into the spec, but initially that sounds
             reasonable.

  emilio: 2 questions: (1) In principle it doesn't seem useful to have
          it behave as non-`auto` (or `none auto`??)... but is there a
          use case that people may be using. (2) Allowing `auto none`
          feels a bit odd but I guess it's all right? If ??? then we
          wouldn't completely lose that length.
  astearns: Sounds like we would lose the length at computed or used
            value time
  emilio: I'm a bit concerned about people using lengths. IIRC, `auto`
          is supported along with lengths, so you can specify a length
          and remember a size as if it was laid out.
  oriol: You can't specify `auto` alone, it's `auto` mixed with a
         length.
  emilio: So if you specify `contain-intrinsic-size` and a pair of
          lengths, we'd turn it into `auto` and pair of lengths, but
          not just...
  chrishtr: I think upgrading to `auto` with a length is better, that
            way author can provide placeholder sizing before first
            render.
  emilio: They can do it manually if they don't specify `auto` and
          then we wouldn't touch it, but the idea is to do this
          automatically.
  chrishtr: contain-intrinsic-size: width height would be the same as
            contain-intrinsic-size: auto width height.
  emilio: Agree that's desired.
  oriol: If author specified 10px 20px, it would become auto 10px 20px.
  emilio: That seems worth clarifying before resolving, but SGTM.
  astearns: So only in the case where it's set to `none` it would
            become `auto none`.
  astearns: ... so that's why we need to add it to the grammar.
  oriol: Yes, we need to allow this combination so we can upgrade to it
  emilio: Behavior differences between none and 0?
  oriol: Mostly the same, but with grid-template properties or
         multicolumn they can differ
  TabAtkins: There's a note in the spec where setting explicit
             intrinsic inner size can be different than having no or
             one child
  emilio: Seems reasonable to allow auto mixed with none

  chrishtr: To other question: I don't know of use cases for not
            having `auto`. If we had it in original spec, we probably
            would have made it the default.
  chrishtr: Want to point out possible web compat risk, not sure if
            it's a big deal.
  emilio: I think as long as we don't suppress the author specified
          sizes if there are any, we should mostly be fine.
  emilio: But I could imagine someone working around this weird
          behavior by expecting the items offscreen to collapse, and
          collapsing ...
  chrishtr: I think it's worth trying

  flackr: I can think of a use case: you're rotating your device, so
          you as an author know general shape of elements will be
          dramatically different from last remembered size... so might
          want to reset to contain-intrinsic-size rather than
          remembering the size in that case.
  TabAtkins: That produces an observable difference-- that's the
             flicker case we're already trying to avoid?
  flackr: Isn't flicker avoided by scroll anchoring?
  flackr: That is, isn't the flicker avoided by scroll anchoring
          keeping elements anchored to their position onscreen?
  vmpstr: They are, but you can construct cases where it doesn't work
          like in the issue example
  flackr: But if you can ? cases that are ? portrait-like or
          landscape-like, you can ???
  vmpstr: Setting contain-intrinsic-size to new values should
          presumably (not sure) reset the last remembered size?
  emilio?: I don't think it does.
  ?: we should do that
  flackr: That addresses my use case.
  <TabAtkins> "At the time that ResizeObserver events are determined
              and delivered, if an element has a last remembered size
              but does not have contain-intrinsic-size: auto, remove
              its last remembered size."

  chrishtr: So if a style change occurs that changes value of
            contain-intrinsic-size it will blow away the last
            remembered size until it renders again?
  flackr: SGTM
  <chrishtr> sounds fine
  emilio: I think that's reasonable but we need to define precisely
          when that forgetting happens.
  emilio: I think we already had some interop issues there... Oriol
          can probably confirm.
  <TabAtkins> We can definitely add to that condition to make it
              forget upon a value change, yeah.

  astearns: Sounds like we're coming to agreement, that the resolution
            should be that content-visibility: auto forces
            contain-intrinsic-size to gain an auto value, and we'll
            define that auto value for contain-intrinsic-size so it
            works with all the current values, and then make sure that
            the last remembered size is updated in the right place so
            we can deal with the cases that Rob brought up.
  chrishtr: Sounds like everything to me
  jihye: Sounds good to me.
  dbaron: (substitution of text)
  chrishtr: and specify where in rendering step it occurs

  RESOLVED: content-visibility: auto forces contain-intrinsic-size to
            gain an auto value, and we'll define that auto value for
            contain-intrinsic-size so it works with all the current
            values, and then make sure that the last remembered size
            is forgotten when contain-intrinsic-size changes
            (specifying where in rendering step it happens) so we can
            deal with the cases that Rob brought up.

CSS Text
========

Renaming text-space-* to white-space-*
--------------------------------------
  github: https://github.com/w3c/csswg-drafts/issues/8273#issuecomment-1404619129

  fantasai: This issue... a long time ago we had a
            `white-space-collapse` which together with `text-wrap`
            were longhands of `white-space`.
  fantasai: XSLFO folks complained that, since we organized the value
            space to be simpler than XSLFOs, complained about naming
            collision, so we renamed (but less clear)
  fantasai: 2 decades later, someone asked to rename back,
            confirmation from Liam Quin and Murakami-san that it's OK
            to rename back to the more easily understood name.
  astearns: Implementation status of text-space properties?
  fantasai: As far as I know, nobody.
  astearns: So good time to rename
  astearns: Any concerns with going back to `white-space-collapse`?

  RESOLVED: Rename `text-space-collapse` back to `white-space-collapse`

CSS UI
======

Tweaking outline-style: auto colors
-----------------------------------
  github: https://github.com/w3c/csswg-drafts/issues/7761

  emilio: This about whether `outline-style: auto` respects or not
          `outline-color` and/or `accent-color`. Behavior is all over
          the place. WebKit allows neither. Blink uses
          `outline-color`, Gecko uses `accent-color`.
  emilio: Reason I think Gecko behavior is preferable is 2 reasons:
          `outline: auto` using the `outline` shorthand resets
          `outline-color` to `currentColor`, which seems wrong at
          least 99% of the time. and (2) it's more consistent with how
          form controls work, so using accent-color makes more sense
          to me.
  <fantasai> +1
  emilio: If we go with `outline-color` I'd at least like `outline:
          auto` to not expand to `outline-color: currentColor`

  florian: I think I agree -- some arguments seem stronger than
           other, but agree in net. `auto` outline could look like
           lots of things -- on some platforms it may follow the
           accent and on some platforms it may not. So if it respects
           any color it should probably be accent-color, but on some
           platforms it may not respect anything and just stick to one
           specific thing. So I think say "if you're going to be
           influenced by any property, it should
  florian: be accent-color, but whether and how you do that is
           platform-dependent.

  masonf: Clarify: is proposal to change initial value for
          outline-color to accent-color, or ???
  emilio: Allow the accent-color computed value to change the
          rendering of the auto-style outline... no default value
          changes involved.
  <chris> this seems untestable, so it is *allowing* things but not
          constraining them
  masonf: My initial reaction was that accent-color was for form
          controls, and now this applies to everything on the page. It
          doesn't feel like an accent to me.
  masonf: I'm wondering if there's another way to fix the problem, but
          I don't have a well thought out solution. But one thing I
          put on the issue was wondering if we could change
          `:focus-visible` UA styles to only be `outline-style: auto`
          so it doesn't reset the color.
  florian: `outline` is sometimes used for decorative purposes but
           usually for focus indicator... and focus indicator usually
           matches form controls. On Mac OS changing system accent
           color changes focus indicator, so going after accent color
           makes sense.
  <fantasai> Yeah, if the focus outline isn't a shade of gray, it's
             generally the accent color
  masonf: As an author you can achieve that without line-color:
          accent-color, no?
  florian: You could, but as specified (and I Think implemented),
           setting outline: auto sets outline-color to currentColor,
           so if that starts influencing the color that's odd.

  smfr: I think I agree with masonf... like to hear from web
        designers, maybe jensimmons... should outlines be controlled
        by accent-color. accent-color is author controlled but system
        highlight color is user controlled. So concerned about using
        accent color.
  * fantasai notes that jensimmons has a conflict at this hour, so
             can't be here
  emilio: Would you be similarly concerned about using outline-color?
  smfr: yes
  florian: That's what I was saying about specifying: saying that if
           you're influenced by *any* color it should be accent color,
           but you don't have to be.
  smfr: I think I'd choose accent color in that case, but want some
        more feedback about whether that's the right thing. If
        accent-color not specified, fall back to outline-color?
  emilio: Gecko falls back to system accent color.
  smfr: Sounds better than falling back to outline-color.
  emilio: ... Accent-color is a hint so you're allowed to ignore it.
  emilio: I think allowing customizing outline appearance is nice,
          auto outline has a11y benefits. But if WebKit wants to do
          something different... accent-color seems like the right
          property to allow you to choose.

  chris: I agree with smfr that the crux is author control versus user
         control. This seems to be adding an allowed behavior to a
         list of unspecified behaviors, so it seems to be making what
         people already do spec compliant. Not clear if it's allowed,
         or if it's advice. Are we suggesting, or is it do whatever
         you want, but did you forget about this one?

  emeyer: Thinking of this as an author, it's a little weird to me
          that setting outline-style: auto would fall back to a color
          from a property that doesn't have the word outline in it.
          But the behavior probably actually makes more sense. I
          wonder if instead of defaulting to currentColor it makes
          sense for outline to default to whatever the system keyword
          is. But that might require too much change in browsers?
  emeyer: I set my outline to be auto, but the color is not my
          outline-color. Unless you know it comes from accent-color,
          might be difficult to work out why. But maybe it's the
          preferred behavior so not too many authors will run into it
          as a problem. But if default value of outline-color could be
          the system color that seems preferable to me, but don't know
          if it's reasonable.

  emilio: Changing the default of outline-color seems not feasible.
          Changing the expansion of `outline: auto` seems potentially
          feasible, but that would still make `outline-style: auto` do
          something relatively weird.
  emilio: I think not honoring `outline-color` is slightly better...
          but then we can get into user versus author choice question
          that chris and smfr raised.

  florian: I was initially supporting emilio's proposal, but I'm
           wondering now because of user vs. author thing, yes, the UA
           can disregard that and display the system colors... could
           have a setting. But if we think about user style sheets, if
           we influence the style of the outline with the
           outline-color property, a user could have a !important
           outline-color... but they're ok with accent-color... then
           there's no easy override for user sheets.
  emilio: The focus ring on form controls when natively styled do
          follow accent color, so that would create an odd behavior in
          my opinion.
  florian: User sheet that says "my focus ring really needs to be X
           because otherwise it's an a11y problem"... ?

  <chris> https://w3c.github.io/csswg-drafts/css-color-4/#css-system-colors
  chris: In color 4, highlight and accent color are both described as
         backgrounds. If we agree on this, I can change the
         description there. We don't have anything in the
         non-deprecated system colors which is an outline color.
  <chris> while currentColor is a text color

  fantasai: I was going to go back to emeyer's comment about changing
            initial value of outline-color... I don't think we can
            change it, because when outline-style is not auto we can't
            change it, but we could change the initial value of
            outline-color to be some kind of auto value that computes
            to currentColor if outline-style is not auto and computes
            to accent-color if outline-style is auto.
  <masonf> +1 to that proposal. That gives the default behavior Emilio
           wants, but the author/user control over the outline.
  <florian> [fantasai's suggestion would deal with the concern I
            expressed]
  fantasai: Multi-level fallback... look at outline-color, then if
            it's the initial value the UA will look at accent color.
            But if you set outline-color to something else specific
            you'd get that. It's a possible solution, not sure if
            good. It works around compat stuff and allows both
            outline-color and accent color to influence.

  emilio: Not opposed to fantasai's proposal...
  emilio: I was going to mention about chris's background versus
          foreground color -- at least some browsers (Blink and Gecko)
          do paint 2 outlines when you do outline-style: auto so you
          are guaranteed to show some outline even if it matches the
          background.
  <chris> ah we are back to the stripes function

  PaulG: Does anyone know ... I was under the impression that
         accent-color had something to do with high contrast mode.
         Would then specifying outline-color be a problem because then
         high contrast mode it would not change?
  emilio: There are in the sense that if you specify a non-auto
          outline-color that isn't the system color it would not
          change... but I think that's the expected behavior.
          Similarly if you specify accent-color: <
          something-not-a-system-color>. Unless you specify
          forced-color-adjust: none.
  masonf: I don't think accent-color is the mechanism through which
          high contrast is influenced.
  PaulG: Comfort level for a11y reasons: if someone makes a codepen or
         something to demonstrate how it would work, should be tested
         in high contrast mode, to see which settings a user might
         use, and to preserve choice.

  masonf: I just wanted to say I also like fantasai's proposal. Wanted
          to address 1 question emilio raised: I think under that
          proposal if you had outline-style: auto and outline-color:
          auto, the UA could paint the high-accessibility... 2 rings
          with white outside and color inside -- I believe we could
          still do that in that scenario.
  emilio: I think that's why accent-color seems like a better fit --
          it doesn't override the color completely, but says you
          should render the outline *using* this color, but not
          completely using this color. You have outline-style: solid
          for that.
  florian: You can't guarantee that it's a single color -- could be 2
           lines, gradient, etc.
  masonf: Remains the case with fantasai's proposal -- with
          outline-style: auto can still do those things.
  emilio: Seems weird to use outline-style: non-auto (?) and allow
          color to ???
  masonf: The part I liked was that you could say `outline-style:
          auto` and provide a color and still get the
          high-accessibility ring.
  emilio: Can get that too with accent-color.
  masonf: But then they're not separate, could change color as moving
          around page to controls with different accent color.
  emilio: ?
  masonf: outline-color seems more explicit
  emilio: If the outline applies to form controls then they're not so
          independent anymore.

  fantasai: Example: say someone made accent color red for invalid
            controls and green for valid controls, but want focus
            outline to be consistent color throughout the page. Can't
            do that with only accent-color and not outline-color.
            Default to accent-color makes sense, but see benefit to
            controlling independently.
  <florian> +1 again to fantasai
  masonf, emilio: that's fair
  <masonf> +1 to auto
  fantasai: should new initial value keyword for outline-color be
            auto, normal, or something else?
  <masonf> +1 to automagic
  florian: auto... it doesn't seem normal.
  <bramus> +1 auto
  <tantek> +1 auto
  <fantasai> PROPOSED: outline-style: auto outlines, if influenced by
             an author color, are influenced by outline-color, which
             itself gets a new initial value keyword 'auto' which
             computes to 'currentColor' when outline-style is not auto
             and otherwise represents the 'accent-color'
  proposed resolution: add a new auto keyword to outline-color, that
      means currentColor when outline-style is non-auto and means to
      use the accent-color when outline-style is auto.
  florian: oh, current initial value of outline-color is invert...
  ?: Does anyone implement that?
  ?: no, but Opera 11 did.
  fantasai: I think we should explicitly change the initial value.

  RESOLVED: outline-style: auto outlines, if influenced by an author
            color, are influenced by outline-color, which itself gets
            a new initial value keyword 'auto' which computes to
            'currentColor' when outline-style is not auto and
            otherwise represents the 'accent-color'

  astearns: I think it would be very useful to have a couple of
            examples of how one might use the different properties for
            different purposes and why we have the fallback the way we
            do
  emilio: There's the question of what the new initial value should
          compute or resolve to... I think it should compute to auto
          like caret-color... but maybe it should resolve to the
          accent-color keyword? That can be a followup question, as
          long as well-specified. Maybe we can resolve to auto but not
          sure we can get away with that -- pages might expect rgba()
          values back.
  emilio: We can probably wait to resolve on this.

Align canonical order of `outline` sub-properties with `border`
---------------------------------------------------------------
  github: https://github.com/w3c/csswg-drafts/issues/7700

  TabAtkins: Guillaume noted that despite similar value spaces, the
             outline and border have a different order of the value
             definition grammar, and since we generally follow value
             definition order when serializing.
  TabAtkins: fantasai notes that in CSS2 the grammar order wasn't
             implied to have a meaning.
  TabAtkins: since we do rely on the grammar order for things it would
             make sense to align them
  TabAtkins: Aside from that possibility, I think it's reasonable to
             align the 2, more likely to follow what border does.
  TabAtkins: I think we should resolve to make outline's component
             order match border's component order.
  <fantasai> Note that at least two people filed this issue, since we
             have a duplicate

  dbaron: In the past I was always concerned about the model of
          defaulting to the syntax in the value definition
  dbaron: I think in general it is worth explicitly testing impls to
          see what they do and then coming back
  <emilio> +1 dbaron
  dbaron: Partially I'm guessing impls don't formally follow the spec
          right now
  dbaron: They were implemented before we created this rule, and
          probably haven't updated
  dbaron: So probably tests might show some accidental compliance
          anyway
  astearns: Would you like to test then resolve? Or okay to resolve
            first and use tests to verify?
  dbaron: Probably good to get tests first, but should be fine to
          resolve async once we do.
  <tantek> +1 on getting tests first, this has been implemented long
           enough ago that it's worth gathering that data first
  astearns: Sounds good, let's see if we can resolve async once we
            have the data

  <emilio> Pretty sure firefox is internally consistent (`color`, then
           `style`, then `width`)
  <fantasai> It is not in fact consistent
  * fantasai drops a testcase into the issue
  <fantasai> the engines are all interoperably following the
             inconsistent grammar definition order

Received on Thursday, 23 February 2023 00:31:56 UTC