[CSSWG] Minutes San Francisco F2F 2019-02-25 Part IV: Selectors, Pseudo Elements, URL modifiers for image loading [css-selectors] [css-pseudo]

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


Selectors
---------

  - RESOLVED: Drop individual invalid selectors from selector lists in
              *all* selector functions that take such lists, *except*
              for :not() (Issue #3264: Let :is() have better
              error-recovery behavior than normal Selectors)
  - RESOLVED: Open up a new WICG project for this selector and it's
              sub-issues. (Issue #2296: Selectors for textish and
              buttonish elements)
  - RESOLVED: Push this out to Level 5 (Issue #397: <label> elements)

Pseudo-Elements
---------------

  - RESOLVED: Return null provisionally and open a TAG review issue.
              (Issue #3603: Should Element.pseudo("unknown") be an
              error or return null?))
  - Issue #2960 (New generated content pseudo :between/:separator)
      seemed to be a small use case of a larger problem of developers
      looking to style things on the page that don't exist in the
      content. The group will continue to think on this broader issue.

URL modifiers for image loading
-------------------------------

  - RESOLVED: Unknown <url-modifier>s get silently ignored (rather
              than invalidating the function).
  - The group will look to solve several issues (#1603, #2095, #2994,
      #3659) around image loading by aligning CSS's support with
      HTML's image loading support, via url modifiers.

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

Agenda: https://wiki.csswg.org/planning/sf-2019

Scribe: TabAtkins

Selectors
=========

Error recovery for :is() and :not()
-----------------------------------
  github: https://github.com/w3c/csswg-drafts/issues/3264

  ewilligers: We resolved we'd like to have error-recovery for :is()
              and :where(), but unsure about :not().
  ewilligers: I have use-cases showing that :not() is used frequently,
              so we probably don't want to change the meaning.
  ewilligers: Do we want :nth-child() or :nth-last-child() have
              error-recovery?
  fantasai: :nth-child() should probably have the same error-recovery
            as :is()

  [...]
  fantasai: I think it would make more sense with compound, not
            complex selectors
  fantasai: The big question for :nth-child() was compound vs complex
            selectors.
  fantasai: people want :nth-child(An+B of <selector>)
  fantasai: If dropping support for combinators makes it easier,
            would be good to get it implemented faster. Things like
            zebra-striping non-hidden rows is a major use case that's
            not currently solved otherwise.
  ewilligers: I think webkit already shipped complex selectors in
              :nth-child()
  dydz: I'm looking in the WK code

  fantasai: Emilio asked why we need selectors in :nth-child()
  fantasai: Say we have a list of items, I want to color their
            backgrounds alternately
  fantasai: But some of them are hidden; they're display:none
  fantasai: Counting is based on sibling list. If you hide 3rd one,
            2nd and 4th will both have the same color
  fantasai: So want to count after filtering
  emilio: Whew, that's gonna be slow. We have a lot of caching already
          to make :nth-of-type() fast.

  ewilligers: I confirmed that Safari supports :nth-child(even of
              div+div)
  fantasai: My main concern is if other impls are more likely to
            implement without complex selectors, getting even
            compound-selector interop would still be great.
  emilio: I think impl-wise, not supporting complex selectors is
          easier.
  TabAtkins: Unless we recursively pass down the compound-only
             restriction into :is()/etc, you're at full power anyway.
  fantasai: Maybe that's reasonable to have that sort of restriction.
  fantasai: We'll just say Safari supports L5 of selectors, and L4
            doesn't accept combinators
  <tantek> agreed. reasonable restriction

  emilio: Did we decide on how the new error recovery behavior
          serializes.
  emilio: Did we decide about serialization of invalid selectors in
          :is()?
  TabAtkins: I didn't think we were doing anything in particular?
  ewilligers: I thought we'd just drop them.
  emilio: What if they're all invalid?
  ewilligers: You just get :is(). A little weird with
              :nth-child(even of), tho.
  ewilligers: What about parsing of weird stuff? Extra close brackets,
              what happens?
  TabAtkins: Syntax already handles brackets correctly. We just split
             the tokens on top-level commas, then interpret each chunk
             as a selector.

  fantasai: So back to the issue, :is() and :not() take a list of
            selectors
  fantasai: Currently any invalid selector invalidates the entire
            selector list.
  fantasai: Because we now have these functional notations that
            creates some scoping, within :is() we can just ignore in
            the invalid selector, but still process the rest.
  fantasai: So we're gonna resolve that within :is(), we ignore
            invalid selectors.
  ewilligers: And :where(), :nth-child(), :has(), etc.
  fantasai: But not in :not() - the whole thing will invalidate if any
            are any invalid.
  gregwhitworth: I think it's weird to have :not() work different. I
                 get the percents making it hard tho.
  AmeliaBR: I do use :not() as an @supports for new selectors...
  AmeliaBR: e.g. :not(:valid) means you support :valid, and this
            selector selects things that are not valid
  TabAtkins: I was going over the boolean logic for :not()
             invalidating just parts too this morning, and was getting
             really confused...

  RESOLVED: Drop individual invalid selectors from selector lists in
            *all* selector functions that take such lists, *except*
            for :not().

Selectors for textish and buttonish elements
--------------------------------------------
  github: https://github.com/w3c/csswg-drafts/issues/2296

  fantasai: Use-case seems quite reasonable
  fantasai: People wanna style things that look like buttons as a set
  fantasai: But that set isn't clear, and it's a long list that
            changes over time, maybe across OSes, etc.
  fantasai: So having a selector that classifies inputs as "buttonish"
            and "text inputish", so when you style buttonish you can
            style them all at once to look the same
  fantasai: That seems reasonable to want.
  <bkardell> aliases would help here, but also they wouldn't cover
             'new' things that get/got added
  TabAtkins: I've been in favor of this for a while.

  emilio: textarea counts as inputish?
  fantasai: Yes

  AmeliaBR: Complex things - where text and button are both *parts* of
            it...
  AmeliaBR: Pseudo-element to target pieces, maybe?
  AmeliaBR: And other issue is which groupings makes sense.
  AmeliaBR: I think there is consensus on textish and buttonish, and
            maybe popup-ish
  fantasai: I think for popups UAs typically categorize those one way
            or the other, depending on whether it's styled to look
            fundamentally like an input or like a button
  TabAtkins: What's popup?
  AmeliaBR: Like <input type=color>, raising a popup.
  fantasai: The UA has to categorize, but for those with some options,
            UA should classify according to how they in particular do
            things.
  fantasai: Compound things are complicated.
  TabAtkins: I think for things like file input, when it's a
             text+button combo, it just matches neither.

  hober: How does a custom element say it's buttonish or textish?
  TabAtkins: DOM is just now discussing API for custom elements to
             hook into forms, we should get into that convo.
  bkardell: Was fantasai suggesting an ARIA role=button is buttonish?
  fantasai: That's a possible way to handle the style mapping for
            custom things, yes.
  fantasai: Unsure if it's a good idea, but it's a source of input.
  AmeliaBR: I would say don't do that. If the purpose is to target
            elements with a certain set of default browser styles,
            then the aria-role doesn't apply.
  AmeliaBR: And it goes against the thing that ARIA is for custom
            widgets that don't fit into the browser default stylings.
  <astearns> +1 to role=button isn't buttonish for this discussion
  bkardell: Yeah, what's the intent is the question.
  fantasai: One of the big things is getting styling that author
            doesn't know, because it's from the UA. For custom
            elements the author should know.

  AmeliaBR: Another issue for this is verbosity, plus it's not forward
            compatible. If a new type gets added it could be
            buttonish, but it won't be in your selector today.
  fantasai: And platform conventions can vary.

  tantek: I realize there's a point you can argue either way, but I
          think this is styling according to the browser's default
          styling, not the semantics.
  tantek: I think the instances AmeliaBR and fantasai pointed out are
          key here.
  tantek: One input could be texty or buttony on different browsers,
          that's presentation, not semantic.
  astearns: Does that suggest the name should be :browser-button, etc?
  tantek: Not gonna bikeshed, just contributing to narrowing what
          we're solving

  bdc: I find the intent pretty obscure to be honest.
  bdc: The fact that we're avoiding a few selectors, or classes, isn't
       super compelling.
  bdc: Forcing browsers to make the decision on whether it's buttonish
       or textish is weird.
  [discussion on whether an input exists that could be ambiguous
      between the two categories]

  bkardell: I think if you look around 2008ish in the archives, you'll
            find discussion about this sort of thing.
  bkardell: I think maybe Selectors, when it was still in CSS main,
            included some of these things? A button pseudo?
  bkardell: jQuery definitely supported these things, I think because
            it was in the spec at the time.
  <AmeliaBR> jQuery `:button` selector: https://api.jquery.com/button-selector/
  bkardell: Every designer I know that tries to enforce this style
            runs into this problem.
  bkardell: We landed on the possibility of solving it with Tab's CSS
            Aliases thing.
  bkardell: Important to not create something that's bound too tightly
            to make tiny categories.
  hober: I presented a form-submission API a few years ago, and the
         current proposal looks a lot like it. From what I recall it's
         not tied to the element being a custom element.
  bkardell: Yeah, just think it's important to consider the use-cases
            as holistically as possible, to make sure it gives authors
            a good experience.

  astearns: So think I'm hearing *general* agreement on this, with
            some skepticism about whether it will end up being useful.
  AmeliaBR: I don't usually say this, but this might be worth throwing
            it to WICG.
  AmeliaBR: On that thread lots of people active in CSS communication/
            education, but not in standards. If we could convince Keith
            etc. to draft up some ideas, might be a useful way forward.
  <bkardell> that seems good
  TabAtkins: I support that.
  fantasai: I think on the CSS side it's just a few paragraphs. On the
            HTML side they'll have to define exactly how it applies.
  TabAtkins: And there will be a DOM side, to opt your elements into
             things.
  fantasai: If we don't have the extensibility, is it still worthwhile
            to have this in CSS? The CSS side is just like 15 minutes
            of work.
  astearns: We'd still need the HTML side, right?
  fantasai: That's more clarification, I'd think.

  RESOLVED: Open up a new WICG project for this selector and its
            sub-issues.

<label> elements
----------------
  github: https://github.com/w3c/csswg-drafts/issues/397

  AmeliaBR: I brought this up on WHATWG because the relevant text is
            in HTML, but they threw it back to CSS.
  AmeliaBR: Often you want to do some styling on the label or on
            gencon that depends on :required or :invalid or :focus on
            the label's associated input
  AmeliaBR: Right now the only way to do that is by modifying your DOM
            structure so the label is a following sibling of the input.
  AmeliaBR: Having to modify your DOM to do styling is iffy, there are
            some cases where this can't work.
  AmeliaBR: And it also means you can't use the implicit association
            of label with child inputs; you have to use IDs, which can
            cause problems in dynamic content.
  AmeliaBR: So the suggestion was that the <label> should reflect the
            form-related pseudos, and :focus/:hover, of the associated
            form element.
  AmeliaBR: Last time this was discussed there were some performance
            concerns, but labels already have a DOM association (you
            can chase a DOM property to see the associated input)
  AmeliaBR: As I recall there is something in the HTML spec about how
            focus or hover already propagates in a certain way...
  <xfq> WHATWG issue: https://github.com/whatwg/html/issues/1632
  <astearns> some concerns from bz:
https://github.com/whatwg/html/issues/1632#issuecomment-238301486

  myles: People use labels and form controls everywhere already, is
         this gonna break anything?
  AmeliaBR: If you've got `label:invalid` that currently does nothing,
            then it could be an issue.
  AmeliaBR: Or perhaps some of the more common pseudos
  TabAtkins: I think :hover is the most likely to see some new stuff
  emilio: Eh, reasonable to see `form :invalid`, would trigger more.
  emilio: And the fact that labels can be anywhere in the DOM (current
          state propagation, like to fieldset, is just parent/
          ancestor-based), talks to BZ's concern about this being one
          more thing to slow things down.

  <AmeliaBR> `label:for(:required)`
  AmeliaBR: On the perf issue, it's worth remembering that labels and
            inputs already have DOM properties that link to each
            other. But they probably aren't used much, so they might
            be slow getters, I dunno.
  emilio: Also worth noting that CSS needs a 2-way link; label->input
          for the selector, but input->label for invalidation
  <AmeliaBR> Re DOM APIs, labels have a `control` property, while
             labelable elements have `labels` (node list)
             https://html.spec.whatwg.org/multipage/forms.html#dom-lfe-labels

  scribe: fantasai

  TabAtkins: In general I'd say resolve to reject at this point, since
             still implementer resistance on performance grounds.
             Which makes me sad because I've run into these exact
             problems.
  <bkardell> can we note the "waves hands and invokes potential
             houdini solution" in the rejects notes?
  astearns: Not really a rejection, just no implementer interest yet
  TabAtkins: Yeah, not going in as expected feature of the spec atm
  AmeliaBR: If we do it in the way Tab proposes, to avoid any
            back-compat issues with :for() pseudo
  AmeliaBR: So there's a CSS issue and a WHATWG issue
  AmeliaBR: CSSWG says if we do this, this is how we do
  astearns: And try it out with Houdini
  TabAtkins: I still have to finish TypedOM, but custom selectors will
             probably be next
  hober: There's the AOM work to do association without IDREFs, using
         direct assignment. Should probably tie in with that
  <hober> https://github.com/WICG/aom/issues/2
  TabAtkins: I recently had discussions with people about solving
             problems, can we have a selector associated with a map
             that I have created
  TabAtkins: Seems like would solve a lot of problems
  TabAtkins: Should be part of houdini work

  RESOLVED: Push this out to Level 5

Unknown pseudo() arg
--------------------
  github: https://github.com/w3c/csswg-drafts/issues/3603

  TabAtkins: We can either go with JS likes to signal errors for error
             conditions
  TabAtkins: or DOM likes to return nulls
  TabAtkins: I believe we should return a null for this object.
  TabAtkins: fremy made a good use case for being able to easily test
             whether a pseudo is supported in an element
  TabAtkins: Throwing is more verbose in JS
  astearns: There's also question of does this element support this
            pseudo
  TabAtkins: https://github.com/w3c/csswg-drafts/issues/3603#issuecomment-463287002
  TabAtkins: I think this is fine.
  TabAtkins: Null will immediately throw an error if you try to access
             properties on it, so you'll get an error if you don't
             check anyway
  TabAtkins: Gives you same behavior in practice, but null gives you a
             more useful boolean result in practice
  * fantasai wonders what gCS(unknown-property) returns

  myles: ...
  TabAtkins: querySelector() throws and it's really annoying
  myles: Just pointing out the fact that it throws
  fantasai: If you and fremy agree, seems OK to me
  fantasai: We can also ask the TAG if they have an opinion on this
  astearns: Not sure it's that important
  <bkardell> +1
  fantasai: It's about consistency across the platform. TAG is good
            for that.

  RESOLVED: Return null provisionally and open a TAG review issue.

New generated content pseudo :between/:separator
------------------------------------------------
  github: https://github.com/w3c/csswg-drafts/issues/2960

  fantasai: I don't wanna do another generated content pseudo.... :(
  TabAtkins: Gonna discuss the problem
  TabAtkins: People want to address generated content siblings of an
             element
  TabAtkins: There's a few variants that people want, but usually you
             want to address siblings, and before/after children
  TabAtkins: Sometimes it's about wrappers
  TabAtkins: There appear to be several different possibilities to
             address this

  TabAtkins: First one, is a ::between pseudo
  TabAtkins: It's like ::before/::after in that it creates children of
             an element. They sit between the children rather than
             before/after.
  TabAtkins: Solves problem of ordered list with separators
  TabAtkins: ul::between { content: " | "; }
  TabAtkins: Right now have to be careful about not styling last
             element or first element or whatever.

  TabAtkins: Next one is ::contents, which is a wrapper element around
             all of the real children.
  TabAtkins: This has a number of use cases. People want extra
             wrappers and have asked for this before.
  TabAtkins: Have to do it by putting more elements in the DOM
  TabAtkins: Can be used like ::between in some cases, if you set the
             actual element to be 'display: contents'
  TabAtkins: and then style the ::contents instead of the element
             itself

  TabAtkins: Next one is ::parent/::wrapper, inverse of ::contents
  TabAtkins: Creates a pseudo outside the element. More complicated
             wrt inheritance, because it flows uprward from
             originating element

  TabAtkins: Last suggestion is ::outer-before/::outer-after. Creates
             siblings of originating element.
  TabAtkins: travels sideways

  TabAtkins: I think we should not have all of these. Maybe one of
             these. Maybe none of these
  TabAtkins: 'display: contents' makes some of these easier
  TabAtkins: Question is do we want to do any of these, and if so
             which one?

  fantasai: I really don't like the way ::contents requires hiding
            the element itself
  fantasai: This has bad cascade ergonomics
  fantasai: ::between seems simplest
  fantasai: solves some use cases very cleanly
  <fantasai> The ::contents solution affects how every part of your
             stylesheet interacts with this particular element. You
             want to solve this separator problem in this corner of
             your style sheet, but because you do it by hiding the
             actual element and moving all styles to the ::contents
             pseudo, every other part of your style sheet need to know
             that it has to style the ::contents pseudo of that element
             instead of the actual element.
  <fantasai> This is fragile cascading and bad ergonomics for the
             author.
  <tantek> Cascading is already too hard for authors, I tend to agree
           with fantasai that this would make the model worse (harder)
           for authors to predictably use / style etc.

  emilio: Can we agree that whatever we do, that doesn't affect
          inheritance of the children? If you do ::wraper { color:
          green; } doesn't affect children of the element
  emilio: Because ::first-line has that weird thing and I prefer not
          having it

  dydz: So the problem is that you had that horizontal list and you
        wanted separators, and you wanted vertical bar or character,
        and currently the person is saying there's no easy way to get
        at every other element, don't want to put a bar before the
        first one and not after last one
  fantasai: That's part of it, it's nicer that it's easier to express.
            But the main problem is existing ::before/::after is child
            of the item, but you want a sibling of the item.
  dydz: Why can't you use ::marker?
  TabAtkins: Markers are also children
  TabAtkins: They're inside the list item. If I put a border around
             it, it'll include the marker
  myles: So you want a sibling
  TabAtkins: Yeah, at least in the box tree

  jensimmons: To dydz's point, people who write CSS have a workaround
              for the specific case in the thread
  jensimmons: but when we talk about possibility of creating a new
              pseudo element
  jensimmons: My brain starts spinning about all the dissatisfactions
              we have about this
  jensimmons: Sometimes we wish we had much more than ::before/::after
  jensimmons: Sometimes we wish we had ones that were siblings
  jensimmons: If we go down this road, think about all the ways that
              we want to have pseudo-elements, that's great.
  jensimmons: But let's come up with something that's robust and
              elegant, and solves this use case without creating new
              problems.
  jensimmons: The scope of this problem is too small. It's a hint to a
              bigger scope. Coming up with a quasi-hack that solves
              this one thing is not as robust or complex as what we
              really need
  futhark: What Jen is saying is, ::before and ::after can be same
           alias of ::between?
  fantasai: Child list of an element is ::before, first child,
            ::between, second child, ::between, third child, ::after
  <dbaron> We had something like this before, but I think concluded we
           wanted XBL (or its successor) instead.
  jensimmons: Wouldn't be between, would be something else. You could
              have as many as you want. Like 17 of them. could
              determine if children or siblings
  jensimmons: We have gaps in flexbox and grid, another way would be
              to style gaps or empty grid cells
  jensimmons: would allow authors to style those things without them
              being real

  <bkardell> would it make sense to try to tackle the definitions
             there in houdini?

  myles: General solution to boxes is really interesting. But we don't
         want to go so far and make a whole DOM in CSS.
  myles: A competing proposal that is more powerful and general would
         be interesting, would want to hear about it.
  jensimmons: Most common case for pseudos that are siblings is
              decorating empty grid cells without putting empty markup
              in the DOM
  TabAtkins: That one we definitely need to solve, I agree.
  TabAtkins: That one is easier because it doesn't require where to
             insert between elements, can be a pile of ::befores
  TabAtkins: I fear that a general solution would just re-implement
             the DOM, though.

  fremy: I was going to say, I feel like in what we provide in CSS, I
         would be very glad if we have ::between which is reasonable
         for most use cases
  fremy: If you want custom boxes, use Houdini
  fremy: If you need 17 boxes, you need specific stylings for each
  fremy: 17 random boxes is not useful
  fremy: Grid is a good example of where we can describe this, but in
         the general case I think it will get more and more obscure
  <dauwhe> https://www.w3.org/TR/2003/WD-css3-content-20030514/#inserting0
  fremy: But if we do decoratively in CSS, seems nice, ::between is
         very similar to what we already have and it solves a lot of
         cases that people have
  fremy: Having something simpler solution is better
  fremy: I think ::between is the best way to solve this case. If you
         need more complex, Selectors is maybe not the right solution.

  TabAtkins: We're talking about boxes, but it's about elements.
  TabAtkins: And custom layout is about fragments, not boxes.
  TabAtkins: Let's look more into stuff.
  TabAtkins: Jen brought up more possibilities, we should pay
             attention before tackling this.

  jensimmons: The need is to have a way to lightweight put styling on
              things, like dividers between things or bg colors on
              particular grid cells
  jensimmons: Want to do that in an elegant way, not limited to one or
              two.
  jensimmons: We've been using ::before/::after. We're reaching limit
              of those hacks.
  jensimmons: I don't want to solve one use case. I want to solve the
              systematic problem at the right level.
  jensimmons: I don't think it's just about lines between navigation
              elements, I think it's styling things on the page that
              don't exist in the content.
  <bkardell> wonder if we can be careful if/when we do that about
             whether generated text winds up exposed to the
             accessibility tree too

  dauwhe: I run into this all the time. We want multiple borders in my
          world. Just nest a bunch of divs.
  myles: Which is contrary to the philosophy of CSS.
  tantek: That feels a little different than what Jen was talking about
  tantek: Jen was talking about ways to style the negative spaces in
          CSS.
  fantasai: Wrt multiple borders, we should solve that by actually
            having multiple borders.
  astearns: Sounds like we're done for now, keep discussing later.

URL modifiers for image loading
===============================
  Scribe: TabAtkins
  github: https://github.com/w3c/csswg-drafts/issues/1603
          https://github.com/w3c/csswg-drafts/issues/2994
          https://github.com/w3c/csswg-drafts/issues/2095
          https://github.com/w3c/csswg-drafts/issues/3659

  AmeliaBR: So there are several modifiers that exist in HTML image
            loading.
  AmeliaBR: background-images don't need crossorigin info, so if it's
            the first thing it sees, browser fetches it without
            crossorigin.
  AmeliaBR: If you then use it for something else that *does* care
            about CORS, browser has to fetch a second time.
  AmeliaBR: Or it just gets reused and errors.
  AmeliaBR: Both are suboptimal.
  AmeliaBR: Can get around it today by adding a <link rel=preload>,
            but then need to alter markup to adjust CSS.
  AmeliaBR: So having a way to indicate in CSS that something should
            be requested with crossorigin permissions for later would
            be useful.

  tantek: I agree completely with the use case and with the more
          general use case, that everything you can tweak about image
          loading in HTML should be tweakable from CSS as well
  hober: I agree that CSS should match HTML here.
  hober: But both should be sitting on top of Fetch. Fetch should have
         some keywords, and we use those keywords
  AmeliaBR: Good point
  AmeliaBR: I think all of these should be addressed together with a
            common syntax.
  AmeliaBR: I don't know what's the nicest or more author-friendly
            syntax, but good to consider them all together, not
            piecewise.
  AmeliaBR: Other ones open are #2994 on preloading something, #2095
            for async decoding, and #3659 for lazy loading
  AmeliaBR: Issues for async and lazyload is that browser defaults for
            CSS images are different from HTML content images.
  AmeliaBR: Maybe can't copy html, need to think about what makes
            sense for CSS specifically

  jensimmons: Yes, we need this. Proposal is to put the burden on
              authors to set this up correctly?
  jensimmons: Authors already have a hard time on CORS compat.
  jensimmons: Can we put the burden on the browser instead?
  TabAtkins: I suspect not. These are all behavior changes, so
             changing defaults could break changes.
  AmeliaBR: Also if browser has to consider all possible cases for how
            it'll request an image before it can send the request, it
            can get messy/slow, especially with dynamic loading
  astearns: Yeah, browser might not know that a *future* load will
            need CORS, so there's no way for it to tell without a hint.
  astearns: So on the align-with-fetch issue, does Fetch have keywords
            for all these topics we can follow?
  emilio: Firefox already does async decoding on all images.
  myles: Really? We did that but had to roll it out.
  emilio: We do it unless it's something our image library can tell is
          fast.
  TabAtkins: Is there an attribute for async decoding on <img>? Not
             sure we should do anything img doesn't.
  AmeliaBR: Yeah, there's a `decoding="auto|sync|async"` attribute
            proposal.

  emilio: What's the story with unknown url modifiers? Would be sad if
          you have to rewrite the url several times for different
          combos of browser support.
  TabAtkins: Not defined right now. We should decide how we want to do
             error handling
  * emilio thinks lazyload should be split from the rest of the
           proposal, since that's fairly different
  myles: We solved this for src: with forgiving handling, split on
         top-level commas and ignore unknown stuff.
  astearns: Yeah, good to match.

  <AmeliaBR> URL modifiers https://drafts.csswg.org/CSS-values/#url-modifiers
  AmeliaBR: Reading the definition of url-modifier, it looks like they
            can't be used on unquoted urls or just-string urls. That
            means it needs to have a quoted string inside?
  TabAtkins: Yes.
  fremy: Edge currently ships with the quoted-url-as-function-token
         behavior.
  emilio: Also Firefox.
  astearns: So any objection to silently ignore unknown url-modifiers?

  RESOLVED: Unknown <url-modifier>s get silently ignored (rather than
            invalidating the function).

  AmeliaBR: So I think the rest of the issue is, align CSS's image
            loading support with HTML's support, via url modifiers.
  TabAtkins: Agreed.

  <br>

Received on Tuesday, 26 March 2019 19:29:18 UTC