[CSSWG] Minutes Telecon 2022-05-18 [cssom-view] [css-fonts] [css-pseudo] [selectors]

=========================================
  These are the official CSSWG minutes.
  Unless you're correcting the minutes,
 Please respond by starting a new thread
   with an appropriate subject line.
=========================================


CSSOM View
----------

  - RESOLVED: Remove checkInert from IsVisibleOptions (Issue #7274:
              isVisible inert option)

CSS Fonts
---------

  - There were some concerns about the proposed new keyword for
      font-display (Issue #7271: Add a font-display keyword to
      eliminate @font-face FOIT & layout shifts) encouraging authors
      toward behavior that is bad for users. Discussion will go back to
      github to discuss further the intent to assist authors in making
      a decision they're already trying to make and how to balance that
      against the concerns.

CSS Pseudo
----------

  - RESOLVED: forced-color-adjust doesn't do anything on highlight
              pseudos, and highlight pseudos take their forced color
              state from the originating element (Issue #7264:
              Highlight pseudos and forced-color-adjust)

Selectors
---------

  - RESOLVED: Issue of topmost modal dialog to be addressed with a
              pseudo-class (name TBD) (Issue #7258: Should :active
              apply to dialogs?)
  - RESOLVED: Add :-webkit-autofill in an appendix of selectors 4
              (Issue #7257: List of -webkit- legacy aliases)

===== FULL MEETING MINUTES ======

Agenda: https://lists.w3.org/Archives/Public/www-style/2022May/0006.html

Present:
  Rachel Andrew
  Rossen Atanassov
  David Baron
  Tantek Çelik
  Daniel Clark
  Emilio Cobos Álvarez
  Elika Etemad
  Simon Fraser
  Xiaocheng Hu
  Jonathan Kew
  Vladimir Levin
  Peter Linss
  Ben Mathwig
  Tim Nguyen
  Alan Stearns
  Miriam Suzanne

Regrets:
  Delan Azabani
  Chris Lilley
  Lea Verou

Scribe: dbaron

CSSOM View
==========

isVisible inert option
----------------------
  github: https://github.com/w3c/csswg-drafts/issues/7274

  vmpstr: We have recently added an isVisible function to Element. It
          takes a dictionary of additional options. One of those
          options was about inert-ness.
  vmpstr: Mozilla indicated that checking for inertness was a strange
          thing to correlate with visibility. So we'd like to remove
          this dictionary option, at least for now.
  vmpstr: It's easier to add it later if people actually want this than
          to remove.

  Rossen: I'm assuming this is relatively safe at this point?
  vmpstr: I'm not aware of implementations.
  Rossen: Did you consider oriol's question?
  vmpstr: ... with aria-hidden? Rereading it now.
  vmpstr: It's a good question, but we'd like to begin by shipping
          isVisible as a somewhat non-controversial set of options...
          questions such as these can be raised to add additional
          dictionary options if there are developers who want to check
          these things.

  Rossen: Any objections to dropping dictionary for now?
  <chrishtr> +1 to removing
  vmpstr: Just dropping the inert-ness member from the dictionary.

  RESOLVED: Remove checkInert from IsVisibleOptions

  Rossen: And hopefully oriol will get back to us if he has something
          to raise.

CSS Fonts
=========

Add a font-display keyword to eliminate @font-face FOIT & layout shifts
-----------------------------------------------------------------------
  github: https://github.com/w3c/csswg-drafts/issues/7271

  xiaochengh: I propose adding a new keyword to font-display descriptor
              so it's critical and blocks load event of stylesheet.
  xiaochengh: The purpose is to eliminate flash of invisible/unstyled
              text or layout shift caused by web fonts.
  xiaochengh: There are many ways to mitigate flash or layout shift,
              but either complicated to use or have other issues.
  xiaochengh: This one keyword proposal can hopefully solve this.

  Rossen: I see a conversation back and forth between Jonathan and
          Laurence on the issue. Jonathan is raising some points -- not
          sure they've been answered, especially his first point about
          what is truly critical.

  chrishtr: Regarding critical -- there are examples in issue of font
            use cases that would be considered critical. This isn't a
            question about why they'd be served from a 3d party domain
            if they were critical. If you want your site to be fast
            you'd ideally serve from same domain, but many sites use 3d
            party font service to serve fonts, which allows 3d party
            font service to update fonts over time.
  chrishtr: xiaochengh is proposing that critical fonts should be
            loaded only if they're truly critical. Hope that font
            providers could have query parameter so that their
            stylesheet could say it's render blocking.

  Rossen: Jonathan...?
  jfkthame: Don't have anything specific to add... was trying to
            understand goals and how it would work. I have a little
            reluctance to complicate font-display ... already fairly
            complex that few people understand. But I haven't tried to
            think through implementation issues.
  jfkthame: ... of the new critical value.
  jfkthame: Other question is how this relates to font loading api. Are
            these use cases where authors should be using font loading
            api to more closely control what is happening? Not sure...

  fantasai: My concern is that it prevents the page from showing text.
            I understand that intent is that authors not use it for
            most of the text, but I think authors might use it for
            that. We normally don't make it easier to prevent the page
            from loading for long periods of time, perhaps forever.
  xiaochengh: Problem is developers are already trying to block render
              of page with various hacks. One example is to add empty
              external stylesheet that blocks rendering so font can
              load. Other is add display:none or visibility:hidden and
              remove when font is loaded. Since developers are already
              trying to do it, we can provide a better way.
  <chrishtr> also, style sheets and scripts already block rendering,
             potentially indefinitely.
  <chrishtr> this attribute also indicates intent directly, and allows
             the UA to ignore it after a timeout
  fantasai: I think technique of using visibility:Hidden and then
            visible is the developer very clearly saying that it's not
            to be rendered until font loads. Very clear they want
            invisible.
  xiaochengh: not just making element invisible... making entire page
              invisible.
  Rossen: This is use-case specific. People can do it in a more
          targeted way.
  fantasai: My concern is that someone will be like "Oh, my wedding
            invitation *has* to be loaded in this font because it looks
            ugly otherwise, so I definitely consider this a critical
            font" and then the reader of the invitation, on a different
            connection, ends up never able to read the page

  astearns: I think I agree with fantasai that the current hacks might
            be sufficient for this. But I got on queue because of
            concern with how this works only with render-blocking style
            sheets. I worry about adding something that will work in
            some cases but not in others. We'd have to specify what
            this does, if anything, if the style sheet is not render
            blocking. And I'm worried about adding something that has
            that works and doesn't work
  astearns: characteristic.
  xiaochengh: The intention is to make it render-blocking but after the
              document has already started there's no way to block
              render, so to keep things simple I'm just making it block
              load of style sheet.

  emilio: Similar to that... this would imply the font should load
          unconditionally and fully -- don't have unicode-range (
          presumably ignored) -- my other question isn't this more
          similar to how background images block the load event of the
          page but not of the style sheet. Doesn't achieve the
          rendering blocking that you want... but maybe it does?
          Background image loads get started before layout rather than
          during layout like fonts.

  plinss: I agree with fantasai. I hear the argument that authors do
          this so we should make it easy. That argument falls down when
          authors are doing something bad -- we have no obligation to
          do that. We should teach authors how to do fallbacks,
          progressive rendering ,etc.
  <fantasai> +1 to "don't optimize for making the bad things easy"
  chrishtr: plinss, I don't think there is a good way to do it right
            now. Only way to do it causes flashing on load. size-adjust
            was added but ??. This is a clean solution to this natural
            problem.
  plinss: We have to weight harms between flashing and blank content.
          Look for other alternative rather than blocking?
  Rossen: Not sure how this isn't creating flashing as well while
          you're waiting.
  chrishtr: Shows white.. shouldn't consider that a flash of unstyled
            content.
  fantasai: We already have the block keyword that shows white.
  chrishtr: The existing keyword shows white only for the text, not the
            page
  ?: ... and there's layout shift.
  plinss: I'd say both preferable to blank page.
  chrishtr: I think use cases for either.
  plinss: Authors don't always consider all the factors
  plinss: Doesn't mean we should make it easier... think it will lead
          to more abuse.
  <fantasai> If we're adding a keyword for this, it needs to be
             something really obnoxious and obvious, like
             "block-entire-page-load-forever"

  Rossen: I'm hearing a good bit of feedback. So I think we should take
          this back to the issue and accumulate a little more consensus
          there before we bring it back for a resolution. Also given
          how many people missing today.
  Rossen: Anything else you wanted to highlight today, xiaochengh?
  xiaochengh: The intention is not to help authors do bad things... let
              me outline this another way. We're trying to help authors
              make a tradeoff more easily... tradeoff between page
              stability and responsiveness. No easy way to go to one
              end of the tradeoff.
  Rossen: We'd like to move it back to the issues.
  <astearns> I don't think this is necessarily a bad thing, but I am
             not convinced there is no current way to achieve an
             appropriate result
  fantasai: My understanding is that the proposal is to add a keyword
            that blocks the page rendering *literally forever* if the
            font doesn't load. If it's still not loading 30 seconds
            later because the font isn't loading, that's a problem for
            the user.
  plinss: I think the concern is that authors will unknowingly use this
          badly and wind up doing bad things by accident.
  <tantek> +1 fantasai, plinss this makes it too easy for authors to do
           *harmful* things to users
  <florian> +1 to not liking this, for the reasons said by fantasai and
            plinss
  <emilio> one could make a case that the same can effectively already
           happen for any stylesheet tho
  <chrishtr> Fantasai: this is not new, style sheets can and do already
             block rendering. I do think the spec for this should say
             the UA should provide a timeout.
  <emilio> (I guess that's what chrishtr just said)
  <fantasai> emilio, yeah, and it's obnoxious when I try to load a page
             and it gives me a blank forever even though I know the
             text is loaded

CSS Pseudo
==========

Highlight pseudos and forced-color-adjust
-----------------------------------------
  github: https://github.com/w3c/csswg-drafts/issues/7264

  dandclark: Question about how forced-color-adjust:
             preserve-parent-color should work with highlight
             inheritance
  dandclark: This interaction is potentially problematic.
  dandclark: Prerequisite: consider whether forced-color-adjust should
             be allowed in highlight pseudos.
  dandclark: The spec gives a list of properties. Currently not allowed
             there.
  fantasai: I think the idea of having it not apply and just applying
            the forced-color-adjust effect of the originating element
            makes sense to me.
  fantasai: I think that was mentioned in the post as a way to deal
            with this.
  dandclark: I think that's a good outcome... seems simplest.

  dandclark: For all other color based properties the highlights are
             sort of an independent cascade. But I think it makes sense
             here. Seems odd that the originating element would take
             forced colors and the highlights not.
  dandclark: If the originating element has
             forced-color-adjust:preserve-parent-color, what does that
             mean for highlight pseudos that are active over that
             originating element?
  fantasai: Effect is that the color property is able to inherit from
            the parent the actual color of the parent... and that
            doesn't really impact the highlight pseudos ... which
            doesn't matter for highlight pseudos where the currentColor
            keyword comes from the previous layer. So the keyword
            wouldn't have an effect.
  dandclark: So then try to resolve that forced-color-adjust doesn't do
             anything on highlight pseudos, and that highlight pseudos
             take forced color state of originating element

  Rossen: Proposed resolution: forced-color-adjust doesn't do anything
          on highlight pseudos, and highlight pseudos take their forced
          color state from the originating element
  <dandclark> +1 to the whole thing. I think it's good to have that
              clarification.

  RESOLVED: forced-color-adjust doesn't do anything on highlight
            pseudos, and highlight pseudos take their forced color
            state from the originating element

Selectors
=========

Should :active apply to dialogs?
--------------------------------
  github: https://github.com/w3c/csswg-drafts/issues/7258

  plinss: The sense is that there can be multiple modal dialogs and
          only one is active. Should have a pseudo class for it. I
          propose we re-use the :active pseudo class, though what
          pseudo used is not that important.
  plinss: There was a lot of pushback against using :active. I accept
          it could be problematic... many people seem to think :active
          means the mouse is down, but I think it means the thing is
          active.

  emilio: I was going to echo that... :active applies to all elements
          when you press the mouse, regardless of whether they're
          activatible. So I think it would be very confusing to use it
          for this. Especially because it would trigger when you click
          something in a dialog, because :active applies to the whole
          chain of things.
  emilio: I don't know that the pseudo is that useful -- can't think of
          cases where you want different styling for the topmost modal
          dialog from other modal dialogs.
  Rossen: Is the point you're making that an active modal dialog must
          always be the topmost one, and ... ?
  emilio: I think reusing :active would be a mistake because it already
          applies to <dialog>, and that I don't think there's a lot of
          use cases for styling the active (i.e., topmost) dialog
          versus styling a modal dialog that is not the topmost one.
  emilio: We need to do that internally for inertness, but that's just
          to control inertness of the topmost thing.
  plinss: If you have nested dialogs, I can see wanting to
          differentiate them visually. They may not necessarily be on
          top of each other or obviously obscuring each other. I think
          there's a valid use case for it.
  emilio: Fair. I guess I think it's something the backdrop usually
          takes care of.
  plinss: Depends on what effect backdrop has and whether it's obvious.

  ntim: I'm also against using :active for this. If you're really
        targeting the dialog ??? ... that would make it incompatible.
  ntim: :active has a historical meaning, so I'm against doing that.
  ntim: I also don't see a lot of use cases. But my main pushback was
        using :active.
  ntim: Personally regarding use cases, since modal dialogs are
        triggered using javascript, you can control which class you put
        on the topmost one. I don't see a real gain from adding
        pseudo-class.
  plinss: You could make that argument about almost every pseudo-class.
          Let me push back on :active meaning the mouse is down -- I
          don't think that was original intent. I think it was a
          mistake -- not sure if it's one we can fix.
  ntim: Let's say you have a button inside a dialog, and you're
        pressing that button. Unexpected that :active would apply,
        given that :active propagates to parent elements.
  plinss: It would already be active if the button is clickable
  emilio: not if the dialog isn't modal

  emilio: If I understand correctly, this would make a pseudo for the
          topmost modal dialog. Would be confusing for that pseudo to
          apply to non-modal dialogs.
  <Rossen> +1 to emilio and :active interop being bad
  emilio: Put on queue to say that :active interop is pretty bad. This
          would make it a lot more confusing.

  fantasai: I agree we can't use :active given how it's been
            reinterpreted by implemented. Was never intended to be
            "while I'm clicking on this element".
  fantasai: I can see there might be use cases for having a
            pseudo-element for the topmost modal. Wish we could use the
            word active for it, maybe :active-modal or similar.

  Rossen: I'd like to break the solution into validating the use case
          and coming up with a solution, and then the bikeshedding.
  Rossen: Would like to validate the use case first.
  chrishtr: To the point about developers don't need it because they
            control the dialogs... it's still convenient because it's
            very simple to just have to style the front-most dialog and
            not have to use script to polyfill the same thing.
  Rossen: Sounds like there's more validation to the use case... name
          of the pseudo TBD.
  Rossen: Would prefer to take bikeshedding back to the github issue.

  <tantek> I would like to get input from the OpenUI folks on this
  <tantek> I didn't see any in https://github.com/w3c/csswg-drafts/issues/7258

  ntim: If you have a UI that does stacking multiple dialogs... it's
        not a great UI. This sort of encourages it in some way. I guess
        the role of CSS isn't how to say how to build UIs.
  plinss: I agree stacking modal dialogs is a bad pattern... though
          maybe modal dialogs are a bad pattern to begin with. If we're
          going to do them we should do them well.
  plinss: ... goes against my earlier advice about allowing authors to
          do bad things, but arguably modal dialogs in general are a
          bad idea. If we're going to do them, though, let's do them
          well.
  tantek: I'm looking at issue and leaning towards plinss opinion as
          well. But haven't considered motivating use cases.
  tantek: I think OpenUI folks should comment... may have more context
          of uses cases that would need this pseudo class... or they've
          considered it and decided they don't need it.
  Rossen: I think the decision of styling the active modal dialog
          through a pseudo-class is seemingly obvious decision even if
          we invalidate the use case later.
  Rossen: I'd like to record a decision here....

  ntim: Looking at top layer generally, maybe use case is targeting
        topmost thing in top layer rather than active modal dialog.
        Look at it from different perspectives as well.
  ntim: How does this fit with other things that use the top layer --
        full screen api, popup api.
  ntim: How does this pseudo fit with this stuff... and should it be
        more generic to these things?
  ntim: so maybe openUI input would be good.
  plinss: Happy to get openUIs input, but would like to take a
          resolution to have a pseudo-class.
  <chrishtr> +1 to resolving to add a pseudoclass now. :modal-active ?
  <astearns> hears :tdb
  Rossen: Proposed resolution that issue of topmost modal dialog to be
          addressed with a pseudo-class (name TBD).

  RESOLVED: Issue of topmost modal dialog to be addressed with a
            pseudo-class (name TBD)

List of -webkit- legacy aliases
-------------------------------
  github: https://github.com/w3c/csswg-drafts/issues/7257

  fantasai: We have a bunch of :-webkit- pseudo classes and things that
            we may need to add to selectors spec. ??? has come up.
            Questions are (1) do we define this in selectors 4 spec
            (2) other aliases to add or (3) do we incorporate these
            into definitions of each pseudo, or do we put them in an
            appendix at the end.
  ntim: Isn't there a web compatibility spec that defines a lot of CSS
        prefixes?
  fantasai: Yes, and the editors prefer that we'd define them in the
            relevant specs.
  <ntim> https://compat.spec.whatwg.org/
  florian: That spec is meant as a stopgap for things not spec'd in
           their native space.
  florian: In general: preferably get rid of them. If we can't, spec
           them. Appendix is a good way to spec without encouraging
           adoption.
  Rossen: Main question was should webkit prefixed things go in
          selector 4 spec.
  fantasai: Sounds like add as appendix to selectors 4. Do we add
            :-webkit-autofill specifically? Are there others?

  RESOLVED: Add :-webkit-autofill in an appendix of selectors 4

  <tantek> I know we're over time, but I'm not seeing a reason to
           duplicate the list from the compat spec
  <fantasai> tantek, compat doesn't have a list of selectors
  <fantasai> and also, they'd prefer we move things here
  <fantasai> iirc
  <tantek> thanks fantasai

Received on Wednesday, 18 May 2022 22:31:20 UTC