[CSSWG] Minutes Telecon 2022-06-29 [css-images-4] [css-contain] [cssom-view] [css-backgrounds] [css-variables] [css-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.
=========================================


August F2F
----------

  - Reminder to put on the wiki if you're attending, especially if
      planning to be in person

Images 4
--------

  - RESOLVED: Publish new WD of Images 4 (Issue #7043: Long overdue for
              republishing)

CSS Contain
-----------

  - RESOLVED: Change initial value of 'container-type' to "normal"
              (Issue #7402: Rename container-type: none to normal)
  - A new issue will be opened to discuss if there should be a blanket
      restriction none/normal/auto in custom idents

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

  - RESOLVED: Rename to checkVisibility() (Issue #7317: Rename
              Element.isVisible to Element.isHidden?)

CSS Backgrounds
---------------

  - Oriol will add specific cases to consider on issue #7103 (The shape
      of box-shadow should be a circle for a box with border-radius:50%
      and big spread) and then the group will take up the conversation
      at the F2F where there's more time to spend.

CSS Variables
-------------

  - RESOLVED: Start new draft of variables-2 and add custom units as
              described here (Issue #7379: Custom units as simple
              variable desugaring)

Selectors
---------

  - masonf will discuss with the OpenUI group if the proposal in issue
      #7319 (Add `:top-layer` pseudo class) should be a pseudo-class or
      pseudo-element.

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

Agenda: https://lists.w3.org/Archives/Public/www-style/2022Jun/0017.html

Present:
  Rachel Andrew
  Rossen Atanassov
  Tab Atkins Bittner
  David Baron
  Mike Bremford
  Oriol Brufau
  Tantek Çelik
  Elika Etemad
  Simon Fraser
  Mason Freed
  Megan Gardner
  Chris Harrelson
  Brian Kardell
  Brad Kemper
  Jonatha Kew
  Vladimir Levin
  Chris Lilley
  Peter Linss
  Ben Mathwig
  Khushal Sagar
  Jen Simmons
  Alan Stearns
  Miriam Suzanne
  Bramus Van Damme
  Lea Verou

Scribe: fantasai

F2F in August
=============

  astearns: Reminder f2f in about 4 weeks, please put your details into
            the wiki
  <fantasai> https://wiki.csswg.org/planning/nyc-2022
  TabAtkins: It's very important that you let us know if you're
             attending in-person
  TabAtkins: We need to plan for food and stuff
  <lea> Chris and I may not know if we can come until days before :(
  <fantasai> Lea, that's okay. As long as not everyone does that ;)

Images 4
========
  Scribe: TabAtkins
  Scribe's scribe: fantasai

Long overdue for republishing
-----------------------------
  github: https://github.com/w3c/csswg-drafts/issues/7043

  fantasai: I haven't had time to review, but I'm happy to publish for
            now and have any trouble brought up later
  astearns: Objection to publishing WD?

  RESOLVED: Publish new WD of Images 4

CSS Contain
===========

Rename container-type: none to normal
-------------------------------------
  github: https://github.com/w3c/csswg-drafts/issues/7402

  fantasai: Since we made style containment the default on every
            element, the initial value of container-type is "none".
  fantasai: Was wondering if we wanted to name that as "normal", which
            would possibly let us shut off style containment later if
            needed
  fantasai: No strong opinion.
  TabAtkins: I agree that renaming to normal works
  miriam: Agree and also don't have strong opinion

  astearns: In the issue antti said they weren't opposed to the change
  astearns: But I think they were considering the case where we add
            names to style containers
  astearns: So we could put into the issue that we're okay with
            considering it?
  smfr: If there's more context, I can ping antti and get his response
  astearns: My take is that it's not that container-type has nothing to
            do with style containers, it's just that everything is a
            style container, and the only thing container-type *is*
            doing for style-only containers is letting you set a named
            style container.
  astearns: I think antti is thinking we've broken the connection to
            the property entirely
  astearns: Would be good to find out
  astearns: Simon, do you want to ping antti and we resolve next week?
  smfr: Believe he's on vacation so might not get a response by next
        week
  astearns: Alternately we could resolve now and let them bring up an
            objection later if it's still there?
  smfr: I think I'd prefer that this issue have enough context that
        antti can read it and be sure he understands the issue
  smfr: But with that, I think I'm okay with resolving and letting him
        bring up an issue

  fantasai: The two reasons are: 1) because style is a type of
            container, saying "none" is disingenuous
  fantasai: 2) we might want a way to turn off style container on an
            element, and using "none no-style" is somewhat awkward.
            "normal no-style" is more neutral
  fantasai: We're also not allowed to use container-names of "none" and
            we should keep that restriction, and also exclude "normal".

  astearns: So proposed resolution is to change container-type's
            initial value to "normal" ,but still resolve "none" as a
            future value
  <fantasai> +1
  ntim: How about 'auto' instead of 'normal'?
  fantasai: Could work, but 'auto' usually implies more magic
  astearns: I slightly prefer normal over auto, but no great argument
            either way
  <TabAtkins> I'm lightly for "normal" for the reason fantasai gave
  ntim: No strong preference, just a thought
  astearns: So any objections to normal?

  RESOLVED: Change initial value of 'container-type' to "normal"

  fantasai: Tab suggested in IRC that we just blanket restrict none/
            normal/auto in custom idents and I propose we do that.
  astearns: Makes sense, but do we have those allowed in the past that
            would cause compat issues?
  fantasai: Possible but seems unlikely.
  chrishtr: What does that mean?
  TabAtkins: A custom-ident can never be keyword 'initial'; all global
             keywords are restricted.
  TabAtkins: we'd just add this to the list of keywords
  <lea> +1
  chrishtr: Could it break content?
  TabAtkins: if people are currently using those names, yes
  TabAtkins: but they are very generic, so it seems unlikely
  TabAtkins: but we can check
  astearns: We should open a new issue
  <fantasai> -> https://github.com/w3c/csswg-drafts/issues/7431 for
             custom-ident restriction

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

Rename Element.isVisible to Element.isHidden?
---------------------------------------------
  github: https://github.com/w3c/csswg-drafts/issues/7317

  chrishtr: I think we're ready for the name. We had a vote up for the
            last week
  <vmpstr> +1
  chrishtr: 9 votes for checkVisibility() and only a few on anything
            else, suggest we resolve on that
  astearns: Small number of votes but it was the clear winner

  bkardell: Don't want to block, but all feel like less-bad rather than
            good
  bkardell: I gave some ideas in the thread but it doesn't seem to have
            gone anywhere
  bkardell: Seems worth to take at least one more beat to be sure we
            consider that
  astearns: That said, we've gone over this several times and solicited
            better names several times
  astearns: Your suggestions in particular I'm not fond of due to
            spelling
  astearns: Would think we'd've found a better term in the previous
            discussions if one existed

  bramus: If checkVisibility() is the name, what does it return?
  chrishtr: Still true/false, true if visible

  fantasai: Agree with bkardell that this name isn't amazing, but think
            it's the best we have, and it doesn't have quite as much
            confusing downside as isVisible/Hidden. Fine with going for
            it since we don't have a better option and it's not too
            overloaded of a term.
  astearns: Suppose we could resolve this as "best of everything we
            have so far", leaving it open for new suggestions but
            closing it to all the ones we've considered.
  chrishtr: I think we can just resolve.
  <TabAtkins> +1 to just resolving, fine with this name
  florian: Also not huge fan of the name but found others problematic.
  florian: This one might not be lovely but it doesn't cause problems
  astearns: brian did you want to block?
  bkardell: Do not, it just didn't get much discussion.
  bkardell: Like you said, we need to make progress. If people think we
            won't do better, I support that.
  astearns: So proposed resolution is checkVisibility()

  RESOLVED: Rename to checkVisibility()

CSS Backgrounds
===============

The shape of box-shadow should be a circle for a box with
    border-radius:50% and big spread
---------------------------------------------------------
  github: https://github.com/w3c/csswg-drafts/issues/7103

  oriol: When you specify border-radius, the length is the corner
         radius of the outer border edge
  oriol: For inner edge we subtract the border width from that
  oriol: Spread is the opposite
  oriol: Initial value of spread is 0 tho, so this would make an
         elliptical border radius have corners
  oriol: Firefox has special case for spread radius of 0, keeping it
         sharp. But 0.1 makes rounded corners
  oriol: Suggest adding a correction term that gives sharp corners at 0
         and continuously transforms to round.
  oriol: So the issue: if you say border-radius:50% you get an ellipse.
  oriol: If you have a shadow you probably also expect it will be an
         ellipse.
  oriol: Blink changed impl to match the spec, and people complained
         their shadows were no longer circles.
  oriol: Proposal in the issue is, instead of adding the spread
         distance and subtracting a correction term, we could express
         the border-radius as a % and then, for the shadow, we use the
         same % but resolved agaisnt the size of the shadow
  oriol: This seems to improve various cases, we have posted images in
         the thread
  oriol: Shadows look better, stay circular
  <astearns> images in this comment:
https://github.com/w3c/csswg-drafts/issues/7103#issuecomment-1146870682
  oriol: Downside is if you specify a length, and elemnet has circular
         corners, shadow will have circular corners. New change will
         instead make them elliptical if the box isn't square

  oriol: Vlad suggested a variant where we only resolve to a % in one
         axis, then keep the same aspect ratio for the corner
  <vmpstr> it's kind of, sort of like nine-patching the border radius
  <astearns> problem ellipse images in this comment:
https://github.com/w3c/csswg-drafts/issues/7103#issuecomment-1168157338
  oriol: Problem is if the element is a full ellipse, you won't get an
         ellipse shadow. Circles stay circles but in an ellipse you'll
         get flat edges on the short axis.
  oriol: I proposed another idea - we could say that for the shadow we
         just add spread-distance to the border-radius
  oriol: This would imply that for 0px you'd have rounded corners
  oriol: But we'd also change the initial value for border-radius is
         "none", which would stay sharp. Unsure about compat tho.
  oriol: fantasai proposed interpolating between some radius formulas.
  oriol: Various options, not sure which is best.

  fantasai: Two ideas. One is the problem is largely around circular/
            oval shapes. Many of those are done with %s.
  fantasai: So we could say if the radius is a % we maintain it as a %
            in the spread shape.
  fantasai: Dunno if that really works since the other way to do a
            circle is to do a huge px length and we scale it down.
  fantasai: So it depends on how authors are specifying things.
  fantasai: Another possibility is to interpolate based on how much of
            a straight side we have.
  fantasai: So if the straight side is longer than the radius, we use
            existing formula which is good for rectangular shapes
  fantasai: If straight side is 0 we use the % formula
  fantasai: And between we can interpolate.

  TabAtkins: I hadn't gone this deep before, I suspect I have opinions,
             but would like to take up at a later call, maybe at F2F
  fantasai: F2F sounds good, can draw stuff
  astearns: Leading up to F2F, we should have a set of things to test
            against
  astearns: We absolutely need to fix the spec
  astearns: I'm not sure that we need to have a fix that is good enough
            for all the edge cases yet
  fantasai: We have a bunch of examples currently, both working and not.
  <TabAtkins> I suspect we might need to address this semantically at
              the border-radius side with a keyword that does ellipse.

  astearns: Can I ask Oriol to list out the cases to consider?
  astearns: Summarizing them in the issue, and people can respond in
            the issue.
  astearns: We'll tag this for F2F and come back to it
  <fantasai> https://drafts.csswg.org/css-backgrounds-3/spread-radius
  fantasai: We also have this which we can update

CSS Variables
=============
  scribe: fantasai
  scribe's scribe: TabAtkins

Custom units as simple variable desugaring
------------------------------------------
  github: https://github.com/w3c/csswg-drafts/issues/7379

  TabAtkins: A week or two ago Jonathan Neal had a suggestion in
             Twitter, just doing on pre-processor side, about a way to
             finally address custom units
  TabAtkins: where you want to set some length and use multiples of it
  TabAtkins: Used all over design systems, but doing today with
             variables is awkward
  TabAtkins: have to explicitly use a calc and multiply, quite a lot of
             writing for what is ~3ch for pre-defined units
  TabAtkins: Suggestion is to treat custom units just as variables
  TabAtkins: so if have number with --unit, this is a variable reference
  TabAtkins: triggers same stuff, but resolve it into the appropriate
             calc
  TabAtkins: so 3--unit would become calc(3 * var(--unit))
  TabAtkins: can set up lengths with @property rule
  TabAtkins: can have some control about whether absolute links are
             resolved as time of use or ?? by setting as <length> or not
  TabAtkins: Seems to solve most problems of custom units
  TabAtkins: but doesn't prevent us from doing something more
             complicated using registration
  TabAtkins: later
  TabAtkins: This allows more readable usage for design systems, not
             complicated on implementation side
  TabAtkins: One of our implementers was looking for implementations
             problems and couldn't find any
  TabAtkins: Thoughts?
  <dbaron> +1, sounds simple and valuable
  <florian> haven't spent much time thinking about it, but seems
            reasonable (and terse)

  astearns: faceless comment that they didn't find it particularly
            readable
  astearns: and hides complexity that maybe should be expressed
  faceless: [...]
  faceless: but no objection

  bramus: Would allow ability to polyfill new units as well, e.g.
          define --brm and use your new custom unit code to polyfill it
  bramus: seems really nice
  astearns: For browsers that do not support the new unit, what happens
            when you use the custom property
  bramus: Browser would support the real unit, which you have just made
          your custom unit as an alias, and for browsers that don't
          support it you can give them the fallback
  TabAtkins: If we had ability to do parse-time rejection of declared
             properties... but need JS for that

  miriam: I think this would help solve cases where we would need to
          remove units from a value, e.g. viewport width people want to
          use them in a unitless place like line-height, but this
          wouldn't help with that case, right?
  TabAtkins: Right, that wouldn't help. What you need is the unit math
             in the spec to be implemented.

  jensimmons: I really love this, just wish the -- doesn't need to be
              there
  jensimmons: I do think it would be helpful to get some feedback, can
              think of 2-3 people working on responsive typography be
              good to get their feedback
  jensimmons: they're using mix of absolute and relative sizing in
              setting type sizes etc.
  jensimmons: could be very powerful
  TabAtkins: That's one of the major use cases, so would be great to
             get their feedback
  <lea> I love how general this is, +1 from me too

  astearns: Sounds like this is something we should pursue
  TabAtkins: Where to put it? Variables 1 is fairly mature, so suggest
             starting Variables 2
  astearns: Makes sense to me
  <lea> +1 for variables-2
  <fantasai> +1

  astearns: Proposed resolution is to start variables-2, with this as
            the feature to add
  astearns: Any objections?

  RESOLVED: Start new draft of variables-2 and add custom units as
            described here

  astearns: Let's keep this issue open for a little bit, so Jen you can
            get some additional people to give feedback

Selectors
=========

Add `:top-layer` pseudo class
-----------------------------
  github: https://github.com/w3c/csswg-drafts/issues/7319

  masonf: I've been working on [missed]
  masonf: We resolved to create :modal, for all things that are modal,
          starting with modal dialog
  masonf: Raised this issue for what's the pseudo-class for things in
          the top layer
  masonf: We need this so that pop-up can have different styling/
          animations when it's in the top layer
  masonf: There's a bit of a nuance, when animating in or out, will be
          in top layer but not match the pseudo-class
  masonf: so maybe need a pseudo-class that is more specific
  masonf: but the question is whether to have such a pseudo-class, and
          what should it be called
  masonf: An alternative is to create a top-layer element in HTML, and
          allow using structural pseudos
  masonf: I'm relatively agnostic, thing any of these can work with
          popup API

  ntim: I'm quite against the :top-layer pseudo-class, as I mentioned
        in the issue, I think it doesn't speak to what developers
        generally want
  ntim: For :modal, can describe what :modal is
  ntim: But for :top-layer, can't really describe top-layer, doesn't
        really speak to developer perspective, more of implementer
        perspective
  ntim: I think ?? helps a bit more, but concept of top layer itself is
        very specific to browser engine worldview
  ntim: I don't think it should exist in the current proposed way
  ntim: It's also hard to describe what's the relation with the popup
        API
  ntim: Why open popup in the top layer ... it's not straightforward
        for developers
  masonf: You said you're against the whole thing, but your complaint
          seems to be about the name, is your complaint the name or the
          concept?
  ntim: It's the name, but
  ntim: the concept itself is also a hack
  ntim: it's a hack by itself
  masonf: Can you clarify?
  masonf: top-layer is well-defined for fullscreen and modal, how is it
          a hack?
  ntim: In a way it's a well-defined concept, sure, but it only exists
        because there's no way to display everything on top with z-index
  ntim: that's the only reason it exists
  ntim: it's a hack in that sense, it's a concept that only exists for
        a certain thing

  dbaron: Is your objection that you'd rather see separate
          pseudo-classes for things that put things in the top layer,
          if there's need for those pseudo-classes?
  ntim: yes
  astearns: We've had discussion about scoping things to particular UI
            elements, and wanting to prefer more generic pseudos
  ntim: If you want generic pseudo-classes, I think something that
        speaks more to web developers, something like :open vs
        :top-layer
  ntim: Idk
  masonf: Open is also very very overloaded, and can be confusing
  masonf: top-layer is very descriptive, it's either in the top layer
          or not
  masonf: Agree it's a hack to get around z-index, but it's
          well-defined whether it's in top layer or not
  masonf: Could also create something specific like :open-popup, but if
          we want to be more generic ...

  chrishtr: Following pattern of :modal class, we want to describe
            well-defined behaviors, what is the underlying UI state
            that this is matching against?
  chrishtr: In :modal, it's the modalness, can't interact with other
            things
  chrishtr: just need to come up with other names
  chrishtr: Maybe make specific to the element?

  astearns: It's a push me pull you
  astearns: making something generic to the property that we're trying
            to select
  astearns: Works really well until we really need to distinguish
            between the two different things that have this property
            that never want to be styled together
  astearns: unfortunately we go back and forth quite a bit
  chrishtr: If developer wants to do that, they could combine attribute
            selector with pseudo-classes, to distinguish between
            different types of the element in the popup state
  astearns: That's true

  fantasai: Not trying to select the topmost item in the top layer, but
            all of them, right?
  masonf: Yes
  fantasai: So if you have multiple dialogs and a popup in there,
            they're all matched
  masonf: Yeah, they're all in there. Suggestion by bramus for a
          ::top-layer pseudo-element that would let you select the
          top-most one, but as a pseudo-class it gets them all
  <bradk> :nth-layer(n) maybe?
  fantasai: Okay also there was something about animation state and
            popups, making this not match? Not sure what that is about.
  masonf: It's somewhat peripheral, but for popups you can animate it
          to show or hide. There's two stages - it gets put into the
          top layer, and need a way to select when it's being shown,
          and reverse when hidden.
  masonf: Think that's very specific to the popup api
  fantasai: Wouldn't you want to do that with the fullscreen or dialog
            as well?
  masonf: Yeah might be more general. Let's talk about top-layer first
          though, if there's a transitional state we can discuss that
  fantasai: So it sounds like you want to select top-layer and
            topmost-layer?
  masonf: I think it's needed for top layer, but I have heard requests
          for topmost.
  fantasai: Okay. I agree top layer isn't ideal term since it's
            confuse-able with other things, but we can come up with
            names.
  fantasai: First question is just whether we want to add the pseudo at
            all.
  TabAtkins: I might have raised that
  TabAtkins: Big deal is things that UA puts in top layer, and things
             that CSS puts in top layer, still want to be distinct
  TabAtkins: Need to have a discussion about it
  TabAtkins: it's a complicated issue to get the UI right

  ntim: Are there things CSS can put in the top layer? I think it's
        just APIs like fullscreen right now
  <masonf> https://open-ui.org/components/popup.proposal.alternatives#alternative-css-property

  astearns: We are at time
  astearns: Has OpenUI discussed pseudo-class vs pseudo-element?
  masonf: We resolved on pseudo-class :top-layer
  astearns: What about pseudo-element?
  masonf: Can take it back to Open UI
  astearns: ok, going to close for today, but can bring it back soon

Received on Wednesday, 29 June 2022 23:29:43 UTC