[CSSWG] Minutes Telecon 2021-08-04 [css-overflow-3] [css-masking-1] [css-color-3] [css-highlight-api] [css-nesting-1] [css-sizing-3] [css-transforms]

=========================================
  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 Overflow
------------

  - RESOLVED: Promote scrollbar-gutter to L3
  - RESOLVED: Undo previous resolution. Explicitly mark inline-end
              padding of block container scrollers as undefined in the
              draft for now (Issue #129: Clarify padding-bottom in
              overflow content)

CSS Masking
-----------

  - RESOLVED: Republish masking-1 as CR Draft (FXTF Issue #431:
              Republish masking-1 as CR Draft)

CSS Color 3
-----------

  - RESOLVED: Publish Colors 3 as updated Recommendation with Candidate
              Corrections (Issue #6486: Publish updated Recommendation
              with Candidate Corrections)

Highlight API
-------------

  - RESOLVED: Revert previous resolution and allow any ranges to be
              added to a registry. At paint time we only use ranges
              that are with the originating document (Issue #6417:
              Specifying behavior for Highlights involving multiple
              documents)

CSS Nesting
-----------

  - RESOLVED: Conditionals nested into style rules have their contents
              parsed the same as style rules (so raw properties are
              allowed) (PR #6483: Allow conditional nested rules to
              adopt context)

CSS Sizing
----------

  - RESOLVED: When we have a compressible elements also transfer a
              fixed min block size through the aspect-ratio to become a
              min inline size (Issue #6341: Compressible elements with
              aspect ratio)
  - Next week the group will come back to issue #6341 to try and reach
      a resolution on how to deal with percentage block sizes.

CSS Transforms
--------------

  - There were several questions on issue #6488 (After #6320 there's no
      way to get an identity transform for interpolation of
      perspective) and the group ran out of time before consensus could
      be reached. It will be added to next week's agenda in order to
      reach resolution.

===== FULL MINUTES BELOW ======

Agenda: https://lists.w3.org/Archives/Public/www-style/2021Aug/0000.html

Present:
  Adam Argyle
  Rossen Atanassov
  Tab Atkins-Bittner
  Amy Carney
  Daniel Clark
  Elika Etemad
  Simon Fraser
  Daniel Holbert
  Dael Jackson
  Sanket Joshi
  Daniel Libby
  Chris Lilley
  Ting-Yu Lin
  Peter Linss
  Alison Maher
  Cameron McCormack
  Alan Stearns
  Matt Woodrow

Regrets:
  David Baron
  Chris Harrelson
  Jonathan Kew
  Morgan Reschenberg
  Greg Whitworth
  Miriam Suzanne

Scribe: dael


  astearns: This looks like enough people to start
  astearns: I did notice fantasai the issue you added the agenda+ to.
            If we have time we'll get that
  astearns: Any other changes for the agenda?
  fantasai: Wanted to ask about moving the scrollbar to overflow 3
            from 4
  <fantasai> https://drafts.csswg.org/css-overflow-4/ overflow-4 is
             mostly about exploratory fragmentation ideas
  astearns: We can start with that. Other changes?

TPAC
====

  AmyCarney: We discussed maybe meeting with APA at TPAC?
  astearns: We'll start with that
  AmyCarney: I don't have a designated time yet. You said it might be
             flexible on your part. Mostly APA wanted to bring up MQ
             again. Discuss things ?? gave a presentation on that could
             be in MQ5
  astearns: I think APA should propose a time and we will show up. We
            have no other obligations for TPAC week yet
  AmyCarney: I will discuss that with the group next week
  astearns: It will be good to have those items on the agenda. Anything
            else you want to discuss we should probably bring it up
            before. If anyone else has topics for APA please add it to
            the email thread
  astearns: Anything more on that?
  AmyCarney: That's all

CSS Overflow
============

Moving scrollbar-gutter to overflow 3
-------------------------------------

  fantasai: Currently in overflow-4 but it's contents are mostly super
            exploratory stuff that we want to work on one day but not a
            focus.
  fantasai: scrollbar-gutter is looking at being implemented at some
            point. Make sense to shift to overflow 3
  fantasai: Had discussed moving it to scrollbar, but doesn't style
            scrollbar itself and concept of scrollbar-gutter is a
            useful layout concept we'll need to reference.
  fantasai: I figured make sense to leave in overflow
  <florian> +1, WFM

  astearns: Do you know where in the process overflow 3 is?
  fantasai: Not in CR yet but getting close. Most things are actively
            under implementation or are implemented
  florian: Low 10s of open issues
  astearns: Any concerns with promoting scrollbar-gutter to L3?
  astearns: Objections?

  RESOLVED: Promote scrollbar-gutter to L3

CSS Masking
===========

Republish masking-1 as CR Draft
-------------------------------
  github: https://github.com/w3c/fxtf-drafts/issues/431#issuecomment-891182920

  chris: I'd like to publish a new CR draft
  chris: It was published in 2014. Bunch of technical changes since.
         Then we can start wide review and publish CR snapshot later
  astearns: Sounds good to me. Other comments?
  astearns: Objections?

  RESOLVED: Republish masking-1 as CR Draft

CSS Color 3
===========

Publish updated Recommendation with Candidate Corrections
---------------------------------------------------------
  github: https://github.com/w3c/csswg-drafts/issues/6486

  chris: Long bug with hsl colors. Color 3 has ABC program for that. We
         received a report that almost 50% of values are wrong.
  chris: Fixed in color 4 by running the JS. Having done that made
         sense to put in L3.
  chris: Also a couple of little changes in ED that I also did as
         candidate corrections. We can publish and get that process
         moving. Doesn't require directors decision, just decision to
         publish

  astearns: Concerns?
  florian: Question- we're positive JS is right?
  chris: Yes
  florian: Rest is editorial?
  chris: Yes
  chris: Removed media from propdef is in as candidate
  florian: Sure. Process def of editorial is narrow
  chris: They're property corrections that allow you to see in place
         the change. Proposed corrections have normative force
  florian: If parts of spec are editorial you can do them immediately.
           If they are grey...
  chris: I think it's grey zone
  astearns: Other comments?

  astearns: Objections to Publish Colors 3 as updated Recommendation
            with Candidate Corrections

  RESOLVED: Publish Colors 3 as updated Recommendation with Candidate
            Corrections

  astearns: Other publishing things?

Highlight API
=============

Specifying behavior for Highlights involving multiple documents
---------------------------------------------------------------

  github: https://github.com/w3c/csswg-drafts/issues/6417#issuecomment-884332586

  dandclark: This is a rerun of an issue I raised a couple weeks ago.
             Reached resolution but thought of an issue with that
             resolution.
  dandclark: Summary is that if we have a couple of same domain iframes
             have a couple of registries and can add range from wrong
             window. Resolved to make impossible by throwing when you
             attempt to add highlight registry from another window
  dandclark: This is trying to establish invariant where they only have
             ranges from same window. Issue might be is if I add range
             from same window and I moved to another window I have
             violated the invariant and it's not clear what to do
  dandclark: No straightforward way to block unless we check when we
             move
  dandclark: I'd like to revisit if throwing is right. If we can't
             maintain this invariant re-open allowing and during
             painting step they're skipped.

  TabAtkins: If we can check what window they're from at painting time
             I'm not sure why it's problematic to check upon assignment
             to registry
  dandclark: We can, but if at time assigned to registry it's correct
             but then I can take and position in a different window and
             it's too late to stop
  TabAtkins: Oh, didn't realize range could move like that
  dandclark: Codesnip in the issue
  <dandclark> https://github.com/w3c/csswg-drafts/issues/6417#issuecomment-884332586
  <iank> ranges are amazing like that.

  florian: I haven't followed this closely, but it reminds me of
           interaction between ranges and CSS contain where range had
           one end outside and one within and the possibility that
           changing violates containment
  florian: Had considered having in dictionary and ignoring it. I don't
           think we resolved there and it's still open
  <florian> the css-contain issue is:
https://github.com/w3c/csswg-drafts/issues/4598

  smfr: Do we need to invent a new kind of range that's live but
        contained in a single document? Cannot move between docs?
  TabAtkins: And restrict to only accept that type?
  smfr: Range would associate to that document and throw if you call
        with a node from different doc?
  TabAtkins: But we only allow that new type of range with this API?
  smfr: Possibly
  TabAtkins: If we didn't restrict not sure what we gain with the new
             range type
  smfr: Yeah, only get benefits if you enforce using the new kind of
        range

  sanketj: I wanted to echo what florian was saying. Similarities with
           the contain boundary case where it doesn't make sense for
           range boundary to check and it's allowed at paint and we
           decide then to allow
  sanketj: This should work same where we allow authors to place ranges
           where they want but when we paint we only paint those on
           same originating doc as the highlight registry. That's my
           preferred solution here
  <dandclark> +1 to what sanketj said :)
  <GameMaker> +1 for sanketj/florian's solution as well
  astearns: I think I prefer that solution as well. I can imagine this
            being whack a mole where we restrict things being added and
            someone comes up with a method of getting a range into a
            registry we hadn't thought of
  astearns: Seems like it's fitting the problem better

  Rossen: I agree with the path forward.
  Rossen: Before we resolve, sanketj or florian, can you remind us what
          the OM or a11y model behind the ranges? How would they be
          exposed to assistive tech. Expose collection, only active,
          etc.?
  florian: I think unresolved in spec. Maybe sanketj knows what was
           explored implementation-wise
  sanketj: I don't think we've reached exploring how to expose. OM-wise
           the highlight, range objects are OM types we're working with
  Rossen: I think it would be unfortunate if we reach too far into
          implementing without considering those scenarios. I would
          suggest to start thinking through these
  florian: You're right. It's been known for a while but it's about
           time we look into it

  heycam: Just realized I think we have another instance of this which
          is selection object from getSelection. I don't remember what
          happens but maybe we can see what that does and perhaps do
          the same
  astearns: Anyone know what happens for selection?
  sanketj: I don't know how selection values update, but nothing blocks
           from being selected in another document. I'm not sure what
           happens when it does, though. Nothing stops it from being
           placed in arbitrary locations

  astearns: Previous resolution was throw on mismatches
  astearns: I'm hearing proposal is revert previous and allow any
            ranges to be added to a registry. At paint time we only use
            ranges that are with the originating document
  astearns: Any discussion on that proposed resolution?
  dlibby: We kept mentioning paint time. Is it more about how
          properties cascade? Or is it really checking when you paint?
  TabAtkins: I suspect it will be some ranges are valid when in right
             document and painting will only paint valid ranges. And
             that would let you hook to a11y tools where they only get
             valid ranges
  florian: And the cascade is for set of ranges for whole highlight so
           some invalid range doesn't change cascade
  dlibby: That's right, thanks
  astearns: Any more comments?
  astearns: Objections?

  RESOLVED: Revert previous resolution and allow any ranges to be added
            to a registry. At paint time we only use ranges that are
            with the originating document

  astearns: Thanks for bringing this up again dandclark

CSS Nesting
===========

Allow conditional nested rules to adopt context
-----------------------------------------------
  github: https://github.com/w3c/csswg-drafts/pull/6483#issuecomment-891359090

  TabAtkins: Currently in nesting we have text to let you nest
             conditional into style. But we don't change the interior
             of nested media rule. Only accepts more rules.
  TabAtkins: If all you wanted to do is set a particular property when
             a media matches you have to write a rule with a & as a
             selector to let you put property
  TabAtkins: Proposal is extend mixture of properties to also apply to
             nested conditional rules so if it's directly nested inside
             a conditional you can put it in
  TabAtkins: Example in issue
  <TabAtkins> .foo {
  <TabAtkins>   display: grid;
  <TabAtkins>
  <TabAtkins>   @media (orientation: landscape) {
  <TabAtkins>     grid-auto-flow: column;
  <TabAtkins>   }
  <TabAtkins> }
  astearns: Adam put current and proposed. Would both work or only
            proposed?
  TabAtkins: Both would work. Putting full rules is allowed, but not
             required when you're only styling element from outside
  <jensimmons> The proposed syntax is *far* better for Authors. Having
               both work is a good idea, for those who think that's the
               only way it will work.

  heycam: That proposed one you have @media as direct child. What would
          happen if you used & in some other rule?
  TabAtkins: That's specified already. Contents of nest conditional
             rules do inherit nesting selector context. Their &
             resolves to the nearest parent style rule
  TabAtkins: The other example shows how you would write it today with
             an &
  <TabAtkins> .foo {
  <TabAtkins>   display: grid;
  <TabAtkins>
  <TabAtkins>   @media (orientation: landscape) {
  <TabAtkins>     & {
  <TabAtkins>       grid-auto-flow: column;
  <TabAtkins>     }
  <TabAtkins>   }
  <TabAtkins> }
  TabAtkins: That will continue to work and & inherits content from the
             outside

  astearns: See support from jensimmons
  astearns: Other comments?
  astearns: Anyone against allowing or concerns about allowing this?
  astearns: Proposal: Not require the & syntax inside?
  TabAtkins: I'll write in IRC
  <TabAtkins> proposed: conditionals nested into style rules have their
              contents parsed the same as style rules (so raw
              properties are allowed)
  astearns: Any objections?

  RESOLVED: Conditionals nested into style rules have their contents
            parsed the same as style rules (so raw properties are
            allowed)

  TabAtkins: That was last major issue before FPWD so we will be
             publishing very soon (we have the resolution to publish)

CSS Sizing
==========

Compressible elements with aspect ratio
---------------------------------------
  github: https://github.com/w3c/csswg-drafts/issues/6341

  iank: The context for this is that when we've got compressible
        element. Example min size we look at min width. If you've got
        min width 50px that's the min size. What nobody does with
        aspect-ratio is transfer min-height
  iank: Can get weird min width 50x and min height 100 px and
        aspect-ratio of 1:1 you end up with a rectangle. Proposal is
        allow the transfer
  iank: Interesting is what to do when can resolve min-height of 100%.
        That's what fantasai and I have been talking about
  iank: I'm on side of resolving % since that matches what we do with
        height and I think leads to better behavior. I think fantasai
        has concerns with that
  fantasai: I read your reply, but haven't thought through it
  fantasai: My concern is we have weird stuff with grid and flex with
            cyclic aspect of grid in particular. Don't want to resolve
            % in a way that causes issues for current content
  fantasai: Pretty sure we should transfer fixed sizes. Less sure on %
  fantasai: I did notice you responding to is your table is asymmetric
            between 2 axis and block size resolves and definite. Why
            not both definite or both 0?
  iank: That's what happens in the min/max size contributions. Resolve
        if it's definite and that transfers but inline axis is cyclic.
  fantasai: I think symmetric is better
  iank: I don't think so. By definition it's not symmetric
  fantasai: If height is resolved but not width it's weird
  iank: That's what happens, though
  fantasai: % usually resolves in width
  iank: Explicitly for min/max. For inline axis they're cyclic. For
        block we do resolve when possible. That's how min/max works in
        all browsers today
  astearns: Sounds like on that concern we should have test cases
  iank: Most of the test cases I've written. I can give example of how
        asymmetric today
  fantasai: I think we can agree if it's fixed size it should transfer.
            Resolve on that and keep discussing %?

  jensimmons: Question is about use cases and not %. I have a system
              where an image is placed and I don't know aspect-ratio. I
              put on it max-width 100%. So that would be usually 100%
              but blow up if it's big.
  jensimmons: I also do max height of 100dvh
  jensimmons: So then I want it to be no bigger than 100vh if it's
              quite tall and it could shrink down a bunch because of
              it's aspect-ratio.
  jensimmons: Is that the intention of this?
  fantasai: Or that case nothing changes. Case is what happens if you
            have that code and a min-height or a min-width. How does
            that interact with your max if you put it in a shrink to
            fix box. What size will it end up being. In a min-content
            grid column current code allows the image to shrink to 0
            even though has an intrinsic size
  fantasai: If you set a min-width we won't shrink to 0. If we have a
            min-height instead do we transfer the min-height across the
            aspect-ratio to prevent collapsing to 0. That's the
            question here
  fantasai: If you give it a min-height of 50px in a shrink to fix does
            it transfer across and have a min-width. The question iank
            has is if i set min-height 10% what do we do there
  <iank> https://www.software.hixie.ch/utilities/js/live-dom-viewer/?saved=9537
  iank: jensimmons I just put in a link to a case
  <iank> https://www.software.hixie.ch/utilities/js/live-dom-viewer/?saved=9536
  iank: fantasai I put in case 9536 to show the asymmetry we have today

  astearns: We could resolve for the definite case. Or resolve for both
            definite and % and leave to fantasai to determine if % is
            incorrect?
  fantasai: I'm not sure I understand the asymmetric issue. Happy to
            resolve on fixed
  astearns: Resolve on just the fixed today, then I'd want to come back
            next week for %
  fantasai: Sure
  iank: Proposal: When we have a compressible elements also transfer a
        fixed min block size through the aspect-ratio to become a min
        inline size
  astearns: Any further discussion?
  astearns: Objections?

  RESOLVED: When we have a compressible elements also transfer a fixed
            min block size through the aspect-ratio to become a min
            inline size

  astearns: We'll come back next week for % case

CSS Overflow
============

Clarify padding-bottom in overflow content
------------------------------------------
  github: https://github.com/w3c/csswg-drafts/issues/129#issuecomment-891194919

  iank: I wasn't around last week. We have data that weren't not as
        compat constrained as we thought. So I'd like to undo resolution
  iank: We've been slowly changing our behavior. Most recently for flex
        to consider inline and block end padding. Did this in Chrome 91
        which has been out for 2 months. Haven't received any bug
        reports
  fantasai: That's in the spec already
  florian: Resolution is only block layout
  iank: Getting to that. As part of this we had use counters
  iank: 1 for if we change behavior for if flexbox already scrolled
  iank: [missed] If block it's already scrollable that's less than the
        change we did for flexbox. So if the block scrollable element
        is scrollable in that axis we can add the end padding
  iank: Second is that we're making something not previously scrollable
        in inline direction. Looking at data might be web compat as
        well but need to investigate more. One library is causing use
        counter to be relatively high and I need to research more. May
        be one trick we need to do
  florian: If I got that right you say that even without adding padding
           we were scrollable that case is safe? And looking at
           remaining?
  iank: Correct
  florian: How long to get data? I think you're right that if we can do
           it it's preferable
  iank: That's why I want to undo previous
  florian: Or at least hold
  iank: If something is scrollable and we add inline-end padding that's
        fine. Should revert that. We're prepared to try and we can
        report back. We're doing this slowly and watching metrics
  iank: I think still might be possible to do it universally. One trick
        we might need to do

  dholbert: The bit about if things are already scrollable makes me
            slightly uneasy. Are you saying whether or not we include
            inline padding depends on if we're overflowing and what
            happens to content changes where we wouldn't be
  <astearns> +1 to concern if we can only do this for
             already-scrollable things
  iank: Today Chrome calculates both overflow areas and return one or
        the other. With these 2 overflow areas can compare to padding
        rectangle and see this is already scrollable so we could return
        slightly larger one.
  iank: If it became dynamic and it didn't have overflow we would stop
        including inline end padding
  dholbert: And if it would if you include inline end and wouldn't if
            you didn't? Or if you weren't in that scenario and content
            is deleted do we suddenly not include the inline padding?
  iank: Correct

  florian: Proposing we resolve on this, leave rest, and you tell us
           when you know? Or leave whole undefined?
  iank: Probably easiest to leave undefined at the moment with an
        explanation. I think might be able to do universal but I need
        more use counters
  florian: I suspect it's worth waiting for if it's a reasonable
           timeframe. It's a better behavior
  iank: Yeah. I need to add use counters to detect for this library to
        see if we break
  <fantasai> I'm ok with leaving this specific case -- inline-end
             padding within block container scroller -- to be undefined
             for now
  florian: Do we need to be concerned about different compat concerns
           for other browsers?
  iank: Not for inline. I would have been more concerned about block
  iank: Example timeframe for the data is 3-6 months
  astearns: Is that reasonable timeframe?
  florian: I guess. Was hoping for CR shorter
  iank: Issue has been open for 5 years
  astearns: And we have reverted resolutions in the past too
  astearns: My understanding is that we are gaining consensus on undo
            previous resolution and leave the issue open until more data
  fantasai: Happy to leave undefined but I don't think needs to block CR
  astearns: Undefined in draft?
  florian: It's an issue. We'll mark as issue and undefined
  astearns: Proposal: Undo previous resolution. Explicitly mark as
            undefined in the draft for now
  astearns: Objections?

  RESOLVED: Undo previous resolution. Explicitly mark inline-end
            padding of block container scrollers as undefined in the
            draft for now

  iank: What I'm going to do next is change behavior to include inline
        end padding if it was scrollable and I'll add another use
        counter for the case I was more worried about. I'll report back
        in a couple months

CSS Tranforms
=============

After #6320 there's no way to get an identity transform for
    interpolation of perspective
-----------------------------------------------------------
  github: https://github.com/w3c/csswg-drafts/issues/6488

  TabAtkins: Previously we had odd behavior where perspective function
             with 0 treated as no perspective. That was null transform.
  TabAtkins: A little while back resolved that's weird and silly.
             Perspective of 0 px is your eyes are on the screen and
             that's different. We clamped to a floor. You can't say 0
             anymore
  TabAtkins: Now we have no way to say no perspective applied. That
             means infinite. Possibly this can be done with infinity
             keyword in calc. A bit awkward and implies infinite link
             is stored internally or the max value triggers this
  TabAtkins: We probably want an actual preserved value. Proposal is
             allow perspective to take keyword infinity directly
  TabAtkins: That's the no transform, does 0 stuff
  astearns: Reasonable to me. Any concerns?

  smfr: Do we have that keyword?
  florian: How is it different from none?
  TabAtkins: None is a null transform list. If you need to match 2
             lists and want 2nd list to not do anything you cannot
             write that. You can't put none in the middle of a
             transform list
  TabAtkins: I'm not sure what you mean smfr
  smfr: Animation iteration takes keyword infinite. Are there other
        places in CSS where this would be reasonable or is this special
  TabAtkins: I think special case because any other place
             where....well...any place where infinity might be
             meaningful we should have a keyword indicating that
             behavior rather than fallback to calc constant because
             that is clamped to a numeric value
  smfr: What happens when interpolate between infinity and 100
  TabAtkins: Well defined. Infinite is identity matrix. It has to
             because before this perspective 0 was the infinite, it was
             just the wrong way to write it

  astearns: We're over time. I'm guessing we should punt to next week
            and resolve
  smfr: Sounds fine
  TabAtkins: Fine

Received on Thursday, 5 August 2021 10:11:34 UTC