[CSSWG] Minutes Telecon 2024-07-10 [media-queries-5][css-anchor-position][css-grid-3][css-lists]

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


Media Queries
-------------

  - RESOLVED: Put this proposal (
https://github.com/w3c/csswg-drafts/issues/6517#issuecomment-2032688406
)
              into css-mediaqueries-5 (Issue #6517: Script control of
              (prefers-*) queries)
  - RESOLVED: Add lwarlow as an editor for mediaqueries-5

Anchor Position
---------------

  - RESOLVED: Change inset-area back to position-area (Issue #10209:
              Bikeshed name of `inset-area`)

CSS Grid/Masonry
----------------

  - RESOLVED: Drop the next value of masonry auto flow (Issue #10232:
              Drop next value of masonry-auto-flow)
  - RESOLVED: Drop masonry-auto-flow (Issue #10231: merge
              masonry-auto-flow into grid-auto-flow?)

CSS Lists
---------

  - RESOLVED: Cursor property applies to ::marker pseudo (Issue #6203:
              The `cursor` property should apply to `::marker`s)

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

Agenda: https://lists.w3.org/Archives/Public/www-style/2024Jul/0002.html

Present:
  Rachel Andrew
  Kevin Babbitt
  David Baron
  Andreu Botella
  Stephen Chenney
  Keith Cirkel
  Emilio Cobos Álvarez
  Yehonatan Daniv
  Elika Etemad
  Robert Flack
  Brian Kardell
  Brad Kemper
  Jonathan Kew
  Roman Komarov
  David Leininger
  Vladimir Levin
  Chris Lilley
  Alison Maher
  Romain Menke
  Khushal Sagar
  Jen Simmons
  Alan Stearns
  Brandon Stewart
  Miriam Suzanne
  Lea Verou
  Luke Warlow
  Jason Williams

Regrets:
  Oriol Brufau
  Eric Meyer
  Bramus Van Damme

Chairs: astearns & Rossen

Scribe: flackr

  astearns: Any changes to the agenda?
  ChrisL: item 8 was closed and can be removed

Media Queries
=============

Script control of (prefers-*) queries
-------------------------------------
  github: https://github.com/w3c/csswg-drafts/issues/6517#issuecomment-2032688406

  TabAtkins: We've discussed this before. For a quick recap, there are
             many cases for e.g. light mode or dark mode on an
             individual site that can be distinct from OS preference
  TabAtkins: Right now, you have to manually store some bit in a
             cookie, doing styling based on that info with JS, possibly
             flashing the wrong style of content before that JS runs,
             in general it's relatively awkward to have something
             possibly depend on a media query or script info
  <JaseW> Example: https://expressjs.com/ does this (Flash of unstyled
          content/theme while it figures out what you want)
  TabAtkins: This proposal is to allow a site to override what the OS /
             browser says the value of a MQ is, and a persistence
             mechanism to keep it until the site data is cleared or
             removed
  TabAtkins: The author can always ignore the MQ and do what they want,
             it just allows them to rely on the MQ and optionally
             override it without separate code paths
  TabAtkins: This seems to have overall support. Would we like to adopt
             this into a csswg deliverable?
  TabAtkins: Possibly css, possibly webapps. Given the tight connection
             to MQ likely css.
  TabAtkins: It would likely go in css-media-queries-5

  florian: Based on how you described it, I'm supportive. In the issue
           some comments seem contradictory. E.g. "this API is to
           override the underlying preference affecting all the things"
  florian: Does this affect the underlying thing as well as the MQ's?
           This seems confusing
  lwarlow: As spec'd, the preference applies to the MQ, is used as calc
           for used color-scheme, used to override the user preference
           MQ client hints, that's the 3 main things. It is largely the
           MQ.
  lwarlow: The used color-scheme seems reasonable as part of that
  florian: Is this different from what TabAtkins said?
  lwarlow: Yes, slightly different. It is only affecting the MQ and not
           changing anything you can't ignore already
  TabAtkins: Right, keeps things consistent across these APIs

  khush: 2 questions. Are you thinking of exposing this for all MQ's,
         or an allowlist that is expected to be overridden? E.g. maybe
         prefers-reduce-motion doesn't make sense?
  khush: Are there cases for closed shadow roots or UA shadow dom where
         authors can now override things they couldn't before?
  lwarlow: The list of MQ's supported are the 5 pref ones,
           color-scheme, contrast, reduce-motion, reduce-transparency
           and reduce-data
  lwarlow: I've done some research to sites in the wild. Reduce motion
           comes up often, so for the same reasons as color-scheme I
           think this makes sense
  lwarlow: To the second point, yes currently there could be user-agent
           styles using MQ's that would be affected. Off the top of my
           head I'm not aware of any though.
  lwarlow: I think this fits into the premise of the API but it is a
           slightly new capability
  TabAtkins: I think it's entirely a good thing that this works, to
             keep things consistent to having the MQ pref set in the
             browser
  TabAtkins: Right now, script controlled functionality doesn't do this
             resulting in inconsistent behavior
  TabAtkins: This makes everything behave as expected
  khush: Sounds reasonable

  JaseW: A question for implementers, how would you feel if a site
         requests an override for color-scheme or reduce-motion? Would
         you expect this to trigger a permission prompt? We've already
         mentioned web devs can ignore, so how do we feel about this?
  JaseW: Do you expect some UI alongside this? e.g. allowing users to
         change the value through the browser
  TabAtkins: This has been discussed. Because it's no additional
             functionality, it doesn't need a permission prompt
  TabAtkins: For resetting something, this should be tied to site data.
             So you can clear site data and clear these prefs
  TabAtkins: UA's could offer more granular controls but it would at
             least be recommended to reset with site data

  ntim: I'm concerned that this is persistent. Let's say the site
        changes owner, the override stays on that domain. This seems
        wrong. Whereas persisted by cookies the new site wouldn't use
        the cookie
  ntim: The user doesn't have an obvious way to reset this
  TabAtkins: Worst case a user can reset site data, but otherwise
             hopefully the web dev would clear this
  lwarlow: You can already design your site to ignore the user
           preference
  lwarlow: The idea is you'd probably have a way in the UA to clear
           these independent of clearing cookies but on the spec side
           wouldn't be required to have
  lwarlow: The fact that it's persistent is a powerful part of this
           API, to avoid a flash of incorrectly styled content, JS at
           every load to restore, etc
  lwarlow: I see the issue, but given good browser UI and existing
           problem, it doesn't seem too concerning

  JaseW: Is there not already a concept of per-site settings based on
         the origin rather than cookies?
  JaseW: Seems like this could be part of that

  ntim: Does that mean the API will need to be async? If the browser
        can provide UI to disable / override it
  lwarlow: The API is designed so the request override is an async
           function
  lwarlow: I don't think requesting the override generally requires
           intervention but it could be

  astearns: Are there many open issues on the repo to be addressed?
  lwarlow: There's one or two, how this interfaces with third party
           iframes. I think the answers already exist in various specs
           and just need to relay that information
  lwarlow: Mainly ensuring this doesn't introduce a new communication
           channel
  lwarlow: Also does it make sense to have all of these supported?
           based on research it seems the answer is yes

  flackr: I think it would be good if the UA was allowed to set as well
          as clear them
  flackr: UA could decide it wants a darkmode per-site toggle, could be
          useful to do
  lwarlow: I agree, this is the intent that it could be set by the UA
  khush: Was going to say the same thing as flackr, it seems better if
         this were browser UI, then we don't have to force each website
         to implement a pattern of adding a button
  khush: If this were to exist would we still want this?
  lwarlow: If that existed, it'd be great, but I still think at least
           color-scheme and possibly others you still have a use case
           where you want to sync values across accounts (e.g. log in
           on a diff browser), and even aside from this there are
           enough sites in the wild that have existing dark mode
           toggles that would be nice to integrate
  lwarlow: With just the browser UI, some sites would probably still
           have their own setting
  flackr: I agree
  miriam: I also support this view. It would be amazing to have browser
          UI for this, but sites will still want it as part of their
          interface

  keithamus: Light and dark are fine, but for artistic styles there's
             no way to enumerate these to the UA other than inferred
             from the stylesheets
  keithamus: There's an idea to add a custom-ident, would the API allow
             overriding this?
  lwarlow: In its current form no, but it could be extended to set this
  lwarlow: You'd basically be able to build github's preferences, high
           contrast, dark mode, etc
  <khush> that's a good point.

  ntim: I'd have a concern about custom idents if the site doesn't have
        a way to enumerate them
  ntim: If we were to show browser UI, we should be able to enumerate
        what's supported vs what's not
  ntim: I think this should be limited to a certain set of MQs. I don't
        think the site should be able to override forced colors for
        example, or other AX related queries
  TabAtkins: Right, only the prefers ones rather than ones that are
             ignorable / preference

  ydaniv: Speaking for a design tool, it'd be good to have the API so
          that you could check how your site looks with different
          schemes / MQ values
  astearns: I'm hearing concerns for particular bits of this API, which
            MQs it should apply to what values it supports, this can be
            hashed out in our draft but it sounds like we have rough
            consensus to add it to MQ 5
  astearns: Any objections to putting this in MQ5?

  RESOLVED: Put this proposal into css-mediaqueries-5

  TabAtkins: Can we add lwarlow as an editor?
  lwarlow: I'm happy to

  RESOLVED: Add lwarlow as an editor for mediaqueries-5

  astearns: Can you migrate issues over as needed?
  lwarlow: Yes, will do
  astearns: Please open issues about custom idents, what MQs this
            applies to and the issues raised here
  astearns: Anything more on this?

Anchor Position
===============

Bikeshed name of `inset-area`
-----------------------------
  github: https://github.com/w3c/csswg-drafts/issues/10209

  ntim: Right now anchor positioning has a property called inset-area.
        It's confusing as it suggests by its prefix that you can't use
        this and inset at the same time but they're independent
        properties that can work together
  ntim: In some ways this is a property to pick the containing block,
        these usually have a position prefix. So I'd suggest
        position-area
  <kizu> +1 to position-area, not a strong one, but convinced by the
         arguments in the issue

  fantasai: When we first proposed it, it was called position-area. It
            was renamed to inset-area because it didn't use to contain
            the containing block, just the interpretation of auto on
            the properties so it was more closely tied to other inset
            properties
  fantasai: Since then we've switched it back to it changing the
            containing block, so I agree it would make sense to
            rename back

  TabAtkins: I'm neutral on the name either way. I do still like
             inset-area as it's named because it occupies the same
             mental area as insets. Most of the time you won't use both
             because inset-area does most of what you need so having
             them in the same syntactic space seems nice
  TabAtkins: More broadly, because it's a value neutral rename, it's
             late enough in the spec lifecycle I'm happy to pushback on
             renames that don't have a clear value. I was happy to
             rename fallbacks but there are impls / tutorials that use
             the existing name. If there's no problem with the existing
             name would prefer not to change it
  astearns: Prefer but not object?
  TabAtkins: Lightly objecting, not formally
  TabAtkins: We've changed a lot of things where there was a good
             argument for it
  astearns: In terms of the timing, this was put on in May. The
            lateness was in part because we didn't get to it in a
            timely fashion
  TabAtkins: This was originally filed a few days after I2S after years
             of discussing the spec
  <fantasai> Note, it wasn't years after discussing the spec -- the
             proposal for position-area (and inset-area) wasn't
             presented until about a year ago.

  kizu: I am more inclined for position-area. Thinking as an author it
        works as an inset, but many authors don't use insets for
        positioning things so there's no disconnection. Thinking about
        positioning something position-area is a good name and removes
        the connection to insets
  kizu: I was convinced by the arguments for position-area in the issue

  astearns: With chair hat off, I also am convinced to change back to
            position-area
  jensimmons: I think what matters most is developer ergonomics when
              someone is writing things so that they don't have to look
              things up
  jensimmons: inset-area feels like an oddball compared to the other
              position properties

  <TabAtkins> position-container + position-area both also seem to do
              very similar things (and they kinda do); the slight
              difference that the changed prefix brings might be a good
              thing.
  TabAtkins: I was saying the association with inset seems good to me,
             but seems fairly neutral either way
  TabAtkins: I'm merely pushing back on the grounds that it has been
             out for a while
  astearns: It sounds like others believe the reasons are strong enough
            to make the change
  TabAtkins: I will say there are many here who feel against making the
             change

  ntim: The chrome team did say they would be okay making breaking
        changes even after shipping. This rename has developer
        experience benefit as jensimmons said and better describes what
        the property does, also implying inset can be used alongside it
  ntim: so I think this is a general improvement for dev experience
  TabAtkins: Point of order, we promised we would be happy to make
             reasonable changes even if they are breaking, not any and
             all changes. We will still push back on changes that don't
             have a strong argument for them
  <dbaron> Here's a list of breaking changes that are implemented or in
           progress in Chrome:
https://groups.google.com/a/chromium.org/g/blink-dev/c/jGTYNuidPRs/m/4oY6JFVyBAAJ

  fantasai: 2 more spec things about the rename. 1. we should consider
            this in conjunction with position-try fallbacks. This takes
            inset-area directly into it. Sharing a common prefix helps
            associate them.
  <fantasai> position-area: top left; position-try: bottom left,
             bottom, etc.
  fantasai: If that's inset area it's harder to associate that those
            represent the same idea
  fantasai: 2nd, if we do figure out shorthanding, having it prefixed
            with position sets us up better for this relationship
  <ntim> +1 to what fantasai said :)
  miriam: I'm unconvinced by some of the arguments, e.g. having inset
          as a prefix doesn't imply it can't be used with inset. But I
          find fantasai's argument convincing. It sounds worthwhile
          for this

  jensimmons: For process, is it too late to change the name if the
              name change isn't a certain amount of benefit? This was
              originally proposed as position-area. The name was
              changed when it was written into the spec but we didn't
              have a CSSWG resolution for the name change. Apple has
              repeatedly felt like we were being obnoxious about
              bikeshedding names to wait for things to mature, now
              we're circling back to say we still believe this is better
  <ChrisL> fair point about no resolution on the earlier name change

  astearns: Any other comments?
  ntim: fantasai also reminded me why inset-area was chosen, because it
        was defined differently before, to change the computed value of
        insets. Now it doesn't so it's complementary to insets, not
        replacing them
  <TabAtkins> I don't understand this argument - we have complementary
              properties both with and without common prefixes all the
              time.
  astearns: I think I'm hearing we should resolve on changing it back
            to position-area
  <ChrisL> +1
  astearns: TabAtkins okay with resolving on this?
  TabAtkins: okay

  RESOLVED: Change inset-area back to position-area

CSS Grid/Masonry
================

Drop next value of masonry-auto-flow
------------------------------------
  github: https://github.com/w3c/csswg-drafts/issues/10232

  fantasai: We have this value for masonry auto flow, instead of
            finding the shortest column it keeps wrapping around
            regardless of the heights of the columns. If you have
            different height columns they can be placed very far apart
            because it doesn't consider their size
  fantasai: It seems weird when you have slight variations in column
            height to jump columns (e.g. jumping to shorter column) so
            we had this idea for a threshold property to say if you're
            within some slack of other columns assume they're all the
            same
  fantasai: Since we have that functionality which needs more precise
            spec, this solves the same problems that next was trying to
            solve but better
  fantasai: e.g. with a 100vh gap you probably don't want to do this
            next column behavior
  fantasai: Proposal is to drop the next value from masonry auto flow
  fantasai: You can easily configure with a threshold
  <TabAtkins> +1 to all that
  <TabAtkins> (I do think an "infinite" keyword would be *useful* in
              masonry-threshold, but it's fine either way)
  <TabAtkins> `masonry-threshold: calc(infinity)` isn't terrible to
              write anyway

  astearns: IIRC, you can do it with masonry-threshold but you have to
            do it with a hacky calc?
  fantasai: We could add a keyword that's infinity, but I can't think
            of a good use case for this. Would like to see a use case
            for why you'd need this
  astearns: Any other comments?
  <fantasai> I can't think of a reason why you'd need anything greater
             than 100vmax
  <TabAtkins> I do have a use-case for actual infinity, but we don't
              need to talk about it here; it's a side-discussion from
              this issue.

  astearns: oriol mentioned he's opposed to dropping it without a
            keyword but it seems like it could be a separate issue
  miriam: That could be a separate issue, oriol did add an example to
          the thread. The use case is if you want stability, e.g. to
          not have disclosure widget move columns
  miriam: Is that an issue if you can't choose some stable value?
  fantasai: We need to solve the stability issue somehow. You wouldn't
            want giant gaps in masonry regardless. You wouldn't want
            weird column heights / stuff jumping around. I think
            stability is a different issue
  miriam: makes sense
  Proposed resolution: Drop the next value of masonry auto flow

  RESOLVED: Drop the next value of masonry auto flow

merge masonry-auto-flow into grid-auto-flow?
--------------------------------------------
  github: https://github.com/w3c/csswg-drafts/issues/10231

  fantasai: Now that we've dropped the definite value and the next
            value, there's nothing for masonry-auto-flow to do, so
            propose dropping property altogether
  astearns: Any concerns about dropping masonry-auto-flow?
  astearns: Objections?

  RESOLVED: Drop masonry-auto-flow

CSS Lists
=========

The `cursor` property should apply to `::marker`s
-------------------------------------------------
  github: https://github.com/w3c/csswg-drafts/issues/6203

  fantasai: Proposal is to allow cursor to ::marker. Technically this
            exposes the geometry of ::marker which we avoided in the
            past because we haven't defined the layout of it
  fantasai: Changing the cursor a few pixels either way seems unlikely
            to break anything significant so it seems like it should be
            safe to apply even though we don't know where it is

  astearns: comments or questions?
  <TabAtkins> +1
  <TabAtkins> (we should solve this issue more generally, but this is
              good as a particular change)
  <kizu> +1
  <ChrisL> +1 to allowing cursor in ::marker but note the list of other
           properties to add at the end of that issue
  <florian> +1 to allowing it

  TabAtkins: We should figure out how to make marker have the same
             power as before and after in the future
  TabAtkins: We'd like to make it a real element that's just not in
             the tree

  ChrisL: I think it's good to add it, the last comment in the issue
          has a bunch of other properties which should probably be
          added so let's not close it off without migrating it
  astearns: Links to other issues though
  Proposed resolution: cursor property applies to ::marker pseudo

  RESOLVED: Cursor property applies to ::marker pseudo

Received on Wednesday, 10 July 2024 23:27:36 UTC