- From: Dael Jackson <daelcss@gmail.com>
- Date: Wed, 16 Mar 2022 19:05:53 -0400
- To: www-style@w3.org
========================================= 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 Color & Color Adjust ------------------------ - After last week's conversation on issue #6773 (Make system colors fully resolve (but flag they were system colors) thus reversing the resolution of #3847), several people reread the original issue and conversation and contributed additional thoughts on github. There is still disagreement between what authors expect and what might be the best behavior for users so discussion will return to github. CSS Syntax ---------- - RESOLVED: Use HTML restrictions for custom idents (Issue #7129: Custom property names too permissive, require namespacing rules) - RESOLVED: Illegal characters in an ident can be escaped (Issue #7129) - RESOLVED: Invalid ident characters are treated as DELIM tokens (Issue #7129) CSS Text -------- - RESOLVED: Republish css-text level 4 (Issue #6900: Republishing CSS Text 4) CSS Flexbox ----------- - TabAtkins and fantasai will review the issue reported on issue #6777 (Column wrap intrinsic size algorithm can make inline min-content > max-content) and add comments or proposed changes to the issue. CSS Pseudo ---------- - There were interesting use cases for issue #6641 (Custom properties on :root) as well as good arguments against special casing. Discussion will continue on the issue to formulate a concrete proposal. ===== FULL MINUTES BELOW ====== Agenda: https://lists.w3.org/Archives/Public/www-style/2022Mar/0005.html Present: Rachel Andrew Adam Argyle Rossen Atanassov Tab Atkins Bittner David Baron Mike Bremford Oriol Brufau Tantek Çelik Emilio Cobos Álvarez Elika Etemad Robert Flack Simon Fraser David Grogan Jonathan Kew Rune Lillesveen Chris Lilley Peter Linss Alison Maher Ben Mathwig Morgan Reschenberg Jen Simmons Alan Stearns Miriam Suzanne Regrets: Lea Verou Scribe: dbaron Admin/Future Meetings ===================== Rossen: We're due for a long call at some point soon, agenda accumulating. Maybe longer. Rossen: Based on poll about TPAC from last week, seems like folks are ready for a hybrid face-to-face. So perhaps should think if we want to host a face-to-face this coming summer. Rossen: Could be similar location to TPAC, that location seemed favorable. Don't want to have conversation now. Think about it. Rossen: TAG is going to have a 2-places-in-world face-to-face meeting in person next week, we'll see how it works. <miriam> 🥳 Rossen: Also, a quick congrats to folks involved with layers and seeing them shipped across all major engines. Remember presentation from Miriam and Jen a few years ago in Spain. Big accomplishment going this quickly from idea to shipping... now we just need to go to REC. Interested in tips/ learnings from your experience. CSS Color & Color Adjust ======================== Make system colors fully resolve (but flag they were system colors) thus reversing the resolution of #3847 ------------------------------------------------------------------- github: https://github.com/w3c/csswg-drafts/issues/6773 fantasai: We delayed this to give me a chance to reread the whole conversation... which I did. What I understand about this issue is that it was raised because switching color scheme shouldn't cause system colors to change when they're inherited. I think behavior of having system colors switch along with color scheme makes sense. Why would you switch color scheme if you're not changing colors? fantasai: Then an argument that making forced-color-adjust: none with 18 different combinations of colors is unwieldy. I'd take that as "too hard to implement". fantasai: Then there were arguments about resolving system colors at used value time: (1) makes some transitions issues go away and (2) setting forced-color-adjust:none on subtree reverts to colors that author specified. If we take this change then forced-colors would work only on non-inherited colors. That could cause contrast problems. fantasai: There's arguments in both directions. emilio: There's another argument for ... color-scheme doesn't behave like you want it to behave. But regarding forced-color-adjust:none, that seems like a better behavior. At least, we were proposing adding a new value just to do the thing you get when you resolve system colors at computed value time. We were planning to make that default in SVG, which is the obvious place to use forced-color-adjust:none. So I'm not sure the behavior for forced-color-adjust:none with used value time forcing is better. <fantasai> https://github.com/w3c/csswg-drafts/issues/6773#issuecomment-1069295596 TabAtkins: In first part of fantasai's response, fantasai argues against inheriting a color not respecting a color scheme. I think you should reconsider. I switched to emilio's viewport because if an inherited system color respects a change in color scheme... this leads to the a11y problem of text color and background color not being set as a pair. If background is transparent... will be bad when you use your text color with other background color. TabAtkins: If you use the system colors explicitly, inherited text will by default wrong if it respects color scheme changes. I think that's a mistake. fantasai: The color-scheme doesn't switch at a boundary randomly... the author has to explicitly say they're switching the color scheme. Why are they changing it if they're not making other color changes too? I'd expect author to use these things in coordination. <tantek> +1 fantasai <Rossen> fantasai, what about tools? F12 is supporting forced-colors effect for debugging/testing fantasai: On the flip side, forced-color-adjust: none problem: if you have a subtree where you want the colors to be the ones I specified and you set forced-color-adjust:none, and the browser only turns off forced-color-adjust for some of your colors, that's not expected behavior. You tried to turn it off and it doesn't turn it off. (You might not notice depending on your colors.) fantasai: I think the difference here is there's no good use case for an author setting color scheme and not setting other colors, but there are reasons the author should expect that setting forced-color-adjust:none actually turns it off. fantasai: I think contrast issue you're concerned about is ??? TabAtkins: I think you're off... when author sets forced-color-adjust.. ??? ... either author is setting some colors and letting others through which violates a11y guidelines, or they're setting all the colors and it doesn't matter. fantasai: They know what color is inheriting through. TabAtkins: There's no guarantee they know what the colors are from the outside, if forced-color is happening, or if they're distributing a component. TabAtkins: So the inherited color is potentially a mystery. They're potentially mixing it with known colors (bad), or overriding all. I think people still do the bad case, and we should give a more-likely-accessible result. <fantasai> Plenty of authors write pages where they set the background on lots of elements, but only set the text color on the root <fantasai> This is normal and expected, and it's not a problem. <TabAtkins> (This convo did happen in the issue, we're re-arguing it.) <fantasai> But it *is* a problem if you set `forced-color-adjust: none` on an element. <fantasai> because the color you've inherited is no longer the one you expected. Rossen: Sounds like we're probably not ready to resolve, but let's hear from fantasai and emilio. emilio: [we can hear him but he can't hear us] fantasai: It's normal and common for authors to set text colors on root element, and set background colors on other elements without resetting the text color. There's no problem with it, because you know what color is inherited because you control the whole page. This doesn't hold for components, but not all pages are component-based. emilio: So I was going to argue the same thing as TabAtkins... that doing it at computed value causes contrast issues by default. Specifying color-scheme may not end up in a color scheme change... may specify normal. It's not clear that authors will realize their colors are wrong. <TabAtkins> Right, even in color-scheme changes authors can't necessarily predict the color that they'll receive. So no, this is bad *even in an entirely first-party situation*. Rossen: Continue discussion in github issue, bring back for resolution next week. <tantek> +1 Rossen CSS Syntax ========== scribe: fantasai Custom property names too permissive, require namespacing rules --------------------------------------------------------------- github: https://github.com/w3c/csswg-drafts/issues/7129 TabAtkins: i18n WG raised issue about custom idents, which allow any Unicode codepoint above a certain codepoint TabAtkins: There are some concerns about e.g. bidi characters corrupting the display of the code TabAtkins: Also argument for consistency in what characters allowed across languages TabAtkins: JS follows UAX?? rules for characters allowed in idents TabAtkins: HTML allows a different but largely compatible range of characters TabAtkins: In one of my Tweets, I showed off using weird Unicode rules TabAtkins: e.g. different emoji are valid or invalid TabAtkins: I agree with i18n feedback, reasonable to partially restrict these TabAtkins: e.g. no reason to allow bidi override chars in CSS idents TabAtkins: so I suggest adopting either HTML rules or JS rules TabAtkins: Don't have a strong opinion on which to go for TabAtkins: Otherwise I'd go with HTML rules by default fantasai: I think this is fairly reasonable, but I don't know the differences between the rules so I don't have an opinion on those yet TabAtkins: JS rules are a bit more strict, they disallow chars that look like punctuation TabAtkins: HTML gives exact codepoint ranges TabAtkins: Reason I'd go with HTML is to guarantee being able to write selectors for custom elements, without ever having to escape fantasai: That sounds reasonable, let's go with that Rossen: Makes sense, any downsides to it? TabAtkins: Any change to make more restrictive, could potentially make some stylesheets invalid TabAtkins: Potentially breaking code that works Rossen: And with HTML rules we'd have fewer breakage Rossen: seems like path of least destruction Rossen: Anyone would like to argue against the change entirely? Rossen: If not any objections? Rossen: Taking the silence as a no RESOLVED: Use HTML restrictions for custom idents TabAtkins: Got 2 sub-issues TabAtkins: One is whether to allow illegal characters to be escaped in an identifier TabAtkins: JS doesn't allow that, you can escape for readability but not to avoid the identifier restrictions TabAtkins: but CSS has traditionally always allowed escapes for everything, so don't see a strong reason to disallow TabAtkins: So I would prefer to go with illegal chars can be escaped <faceless> +1 from us too fantasai: I strongly agree with that Rossen: Any objections for allowing illegal characters to be escaped in an ident? RESOLVED: illegal characters in an ident can be escaped <dbaron> That doesn't allow nulls in idents, does it? TabAtkins: Next question is how do we handle the illegal characters TabAtkins: Do we censor them into e.g. U+FFFD TabAtkins: or drop them entirely? TabAtkins: I'd prefer to drop them, because it would more clearly result in invalid code TabAtkins: so if we allow to work but censored it wouldn't prevent use in source text, which was the goal of i18n TabAtkins: so would prefer to exclude from the ident production <fantasai> +1 <tantek> +1 TabAtkins Rossen: [missed] TabAtkins: No, would not be changing existing rules for censoring rules. Currently lone surrogates etc. do that TabAtkins: Those are in there for UTF-8 well-formedness and C compatibility TabAtkins: They have a reason to be censored out at technical low level TabAtkins: these restrictions are for human reasons, so would restrict differently fantasai: So should we resolve that they would make the production invalid? (That's what was proposed right?) TabAtkins: Yes <TabAtkins> --(╯°□°)╯ TabAtkins: if you put this ^ as a custom property name, the degree sign is not a valid character TabAtkins: so it would make an ident, a delim, a parenthesis, and a ??? TabAtkins: That's definitely not an ident, because it's multiple tokens not an ident token * fantasai didn't quite catch that, what is the degree sign considered now? <TabAtkins> the degree sign isn't a valid ident char under the HTML rules, so this would produce an ident, a delim containing the degree sign, an ident, a delim, and finally an ident <bmathwig> Is there a practical use case for doing something like that? Seems more like a developer having fun rather than good quality code. TabAtkins: Proposed resolution is that it would break into multiple tokens fantasai: What kind of token are these invalid characters going to be? TabAtkins: DELIMs, one codepoint at a time TabAtkins: Characters without a specific role are generally handled as DELIM TabAtkins: and we only use certain DELIMs in certain places RESOLVED: Invalid ident characters are treated as DELIM tokens CSS Text 4 ========== scribe: emilio Republishing CSS Text 4 ----------------------- github: https://github.com/w3c/csswg-drafts/issues/6900#issuecomment-1064818560 fantasai: Proposal is to republish css-text level 4 fantasai: Changes are that I merged css-text 3 and I added percentage values to letter-spacing and word-spacing that we resolved on 4 years ago Rossen: Any reason not to do it? fantasai: Don't think so RESOLVED: Republish css-text level 4 CSS Flexbox =========== Column wrap intrinsic size algorithm can make inline min-content > max-content ------------------------------------------------------------------ github: https://github.com/w3c/csswg-drafts/issues/6777 dgrogan: So... background is that all engines have shipped the same intrinsic sizing algo for years dgrogan: but the algorithm is bad dgrogan: fantasai specified a new one in 2015 but nobody implemented it dgrogan: Authors really want it dgrogan: but there's a big compat risk here dgrogan: but we want to ship it along everyone else so that authors just fix sites once dgrogan: We started implementing it and found this issue where min can be > max dgrogan: Details are in the issue, there's a few possible things we can do dgrogan: One is flooring max to min dgrogan: or in this case making min the max content fantasai: I'm really excited you're working on this dgrogan: Yeah authors really want this and current algorithm is bad TabAtkins: I see the problem, not sure what the best solution is but that's wrong TabAtkins: fantasai and me will review asap iank: We might be testing the new thing in our canary channels and be more concrete about the compat risks iank: We might have to go back for the old thing if we get tons of reports iank: We might also want to do this incrementally, first for single-row flexboxes and so on CSS Pseudo ========== Custom properties on :root -------------------------- github: https://github.com/w3c/csswg-drafts/issues/6641 delan: There's a lot of content out there where a bunch of custom properties are specified on the :root delan: Historically that's been fine for highlight pseudos because they inherited from the element delan: As spec'd now each highlight pseudo has a separate inheritance tree so it'll break that pattern delan: So there's a compat issue in that but I don't think that's a huge issue because we've determined that some breakage is acceptable for these highlight pseudo delan: but there's two complications for this, one is that authors at least they'd have to switch their stylesheets to `:root, :root::selection, delan:` etc <TabAtkins> :root, :root::selection, :root::highlight, ... { /* set up all the custom props here */ } delan: It's also a bit of a performance issue because we might end up with a bunch of property blobs delan: There's another option which is using `@property` with an initial value delan: It's a lot more verbose and it should work delan: I guess question is "is that good enough"? Or can we simplify it somehow for authors? fantasai: Wondering about two things we could possibly do. One of them is making highlights inherit from the root by default fantasai: which might be a reasonable thing to do? fantasai: Or specifying that variables are special and they inherit from the originating element <fantasai> probably can't inherit from :root for all properties, but for variables might be OK delan: I think the first idea seems cleaner delan: I worry if there are any unintended side-effects fantasai: I think the idea is "if you're on the root selection" the variable properties would inherit from the root to `:root::selection` fantasai: I wonder if we want to make this work for every element TabAtkins: Inheriting from originating element appeals, but assuming we want to inherit from a single place could address a larger concern TabAtkins: .... TabAtkins: Argument for root, animations can play into that don't want to play into other places in the tree TabAtkins: Few other suggestions, but if we are going to inherit all the highlights from a single place should do in a way that addresses larger concern TabAtkins: either use initial value from register Properties TabAtkins: or a more ergonomic way to set initial values that doesn't have animations apply to it emilio: Want to point out that ::backdrop has the same issue, ::backdrop doesn't inherit from :root emilio: It hasn't come up often, but it has come up sometimes emilio: I would rather avoid inheriting from multiple places, because that's messy emilio: very special-casy emilio: We do something like that for ::first-line, and it's a massive pain. Don't wish that to anyone <TabAtkins> like `@root { /* only custom props here */ }` Rossen: Where do we go from here? delan: Agree with emilio in general delan: I think especially highlight inheritance, but a lot about highlight pseudos, is full of special cases delan: Would prefer to avoid adding more delan: So maybe it's fine? delan: Tab does have an interesting point though, that there's a general problem to be solved. Not sure Rossen: I'm a bit lost on where we're going from here. What would you like to see, delan? delan: Leaving aside the more general issue of how we can use variables in non-element contexts delan: for the core issue, I think consensus was that the best workaround so far is using custom property registrations with initial values delan: I guess the question I'm unsure about is do we think that is too annoying and unergonomic? No one had an opinion on that in the thread delan: do we think that's already too annoying? <emilio> having an `@root` or `@document {}` rule that applies to the whole document makes sense to me fwiw Rossen: for developers? delan: Yeah TabAtkins: Lea expresses that she find that's too unergonomic to be worthwhile and would prefer something else here <TabAtkins> Also I'm not 100% sure off the top of my head how @property interacts with being nested in @media and @supports. <TabAtkins> (to be fair, both of these require waiting for support. but this is simpler than @property, yeah) argyle: I have lots of experience with custom properties, and it's very tedious to ... argyle: I have a library called openprops with 350 properties argyle: I'm not going to hand-author 300 @property rules so that they can drop into highlight pseudos argyle: so some kind of higher level place to find these would be great argyle: Would be annoying to convert all my simple props and waiting for browsers to even support that emilio: Mentioned on IRC, but having @document or @root or whatever to apply properties to the initial style makes a lot of sense fantasai: one advantage of inheriting from their originating element is that if you need to set variables deeper in the tree you can do that fantasai: and then they'd behave as you expect, you might need to change your ::selection rules a bit emilio: That was the thing I was thinking about. From an author's perspective, what you want is inheriting from originating element emilio: Higher-level thing works for some cases, but might also be more confusing <TabAtkins> I think we'd define @document in cascade? <fantasai> Tab, but it wouldn't inherit that's the problem Rossen: Sounds like we need more discussion, suggest we take it back to the issue Rossen: Maybe you all can start formalizing the various ideas, would be great Rossen: and maybe next time we can be closer to a resolution <argyle> 👍🏻 delan: Sounds good Rossen: Everyone please have a thought about potential F2F, and we'll talk again next week
Received on Wednesday, 16 March 2022 23:07:35 UTC