=========================================
These are the official CSSWG minutes.
Unless you're correcting the minutes,
Please respond by starting a new thread
with an appropriate subject line.
=========================================
Fonts 4
-------
- RESOLVED: Add Chris Lilley as editor to fonts 4
CSS Display
-----------
- RESOLVED: Keep it that blockification and establishing formatting
context are independent (Issue #2673)
- As a part of the discussion for issue #2673 it was raised that
part of the reason blockification and establishing a formatting
context were requested to be linked is the earlier resolution to
make inline flow-root and inline block the same. Over the next
week people will re-look at that decision (
https://github.com/w3c/csswg-drafts/issues/1246 )
and re-open it if necessary.
- Unless there is a new issue opened, next week there will be a CR
publication request.
CSSOM
-----
- RESOLVED: Have the PR https://github.com/w3c/csswg-drafts/pull/2924
as the start of a set of constraints with Gecko
algorithm as an example in a note
CSS Overflow
------------
- RESOLVED: Keep current definition such that we could all lines in
overflow:clip descendant (Issue #2421)
CSS Text
--------
- RESOLVED: Handle percent text-indent in intrinsic size box same as
percent in padding and margin (Issue #1597)
- RESOLVED: Defer this issue (#2390: Implement or unship
word-break:break-word) for now [to Level 4]
===== FULL MINUTES BELOW ======
Agenda: https://lists.w3.org/Archives/Public/www-style/2018Jul/0014.html
Present:
Rossen Atanasso
Tab Atkins
David Baron
Garrett Berg
Oriol Brufau (IRC Only)
Tantek Çelik
Emilio Cobos Álvarez
Dave Cramer
Tony Graham
Dael Jackson
Brian Kardell
Brad Kemper
Peter Linss
Thierry Michel
Anton Prowse
Liam Quin
Manuel Rego Casasnovas
Florian Rivoal
Jen Simmons
Alan Stearns
Regrets:
Rachel Andrew
Benjamin De Cock
Chris Harrelson
Chris Lilley
Michael Miller
Melanie Richards
Lea Verou
Greg Whitworth
Scribe: dael
Fonts 4
=======
astearns: Let's start
astearns: Does anyone have any last minute changes/additions?
fantasai: Resolution for chrisl to be editor of fonts 4? Editing
fonts 3 and not fonts 4 seems like an oversight
astearns: We didn't get one, but I'm happy to now. Is myles on?
<myles> yes
astearns: myles is this okay with you?
myles: Yes
RESOLVED: Add Chris Lilley as editor to fonts 4
astearns: I believe that's in the draft already so it's now official
CSS Display
===========
Blockifications should establish BFC in block containers
--------------------------------------------------------
github: https://github.com/w3c/csswg-drafts/issues/2673
TabAtkins: Oriol has been asking for if blockification should auto
establish bfc rather then occasionally explicit. fantasai
and I disagreeing because they don't happen every time
TabAtkins: If anyone disagrees and things blockification should auto
be a BFC, great let's talk. If not looking for resolution
of support
Rossen: You saying that blocification doens't force BFC?
TabAtkins: Not intrinsically.
Rossen: Example?
TabAtkins: Have to look.
TabAtkins: Any time we blockify and inline-block does not cause it
to become a FC it just goes to block
fantasai: That's true in that it does not change the display
computation. That's required by backwards compat.
fantasai: We could change to not change display and also make it a
formatting context. We do that for float abspos and others
fantasai: Right now when we do blockification in cases where new
element will establish new FC anyway. If we apply
blockification in flow blocks I don't think we'd want new
FC. Grid items currently blockify and a subgrid isn't a
new FC
Rossen: does subgrid blockify?
fantasai: If we did we'd need an exception. It has to blockify
because if it's an inline grid it becomes not an inline.
When it's a grid item...if you have an item inside a grid
that element is blockified. Blockification if it says
display inline it becomes block. inline-table become
block, inline-grid becomes block. But a subgrid isn't a
new FC because it intertwines with grid outside. Can't say
it's a new FC, but it is blockified
fantasai: I don't think we can tie these two concepts together.
block makes it a block. They almost always coincide but I
don't think the concepts are intrinsically bound and
shouldn't be tied in spec
* emilio agrees with fantasai
florian: Exception of subgrid this is an editorial twist as to if
you describe separately or together. So it's editorial.
<Oriol> But I think a BFC is desired if you have `display: inline
flow-root`. CSS DIsplay says it becomes `flock flow`, and a
future feature might blockify without forcing BFC. Then the
flow-rootness will be lost
dbaron: I think one other point in the issue from Oriol. I think
Oriol trying to put in IRC too
dbaron: Current blockification remove flow-root nature. If
blockification always makes things FC it's fine. If it
doesn't then maybe blockification rules need to be fixed so
if you say flow-root you don't lose that
fantasai: So far cases where lose flow-root is converting inline
flow-root or a run-in flow-root. In case of inline-block
we can't change how display is computed due to backwards
compat.
fantasai: Every other case where flow-root is blockified it
establishes a new FC anyway.
fantasai: We're flowing it, we're abspos it, putting it in a grid or
flexbox. These are cases where element that is a block
container it establishes a new FC
dbaron: So in subgrid it's not possible to be a new FC?
fantasai: Matter of terminology, but fundamental idea of a new FC is
there's no intertwining between new and old FC. If there's
info passed through the boundaries when you do something
like whitespace collapsing it's porous. Same is true for
display:block, margins collapse through boundary. The
contents inside and outside participate
fantasai: New FC creates a barrier without that bleedthrough. The
justification and alignment doesn't pass through the
inline-block boundary. Same as a block element with new FC.
fantasai: For a grid, if you nest a grid inside a grid same thing
applies. No interactions between grid tracks inside a
nested grid. Subgrid you do have negotiation between inner
subgrid context and outer parents and siblings. They
participate together in sizing algo
fantasai: The size declarations and names of lines on parent pass to
subgrid. There is fundamental bleeding through of the
content and the layout calc. To say it's a new FC doesn't
make sense.
dbaron: Makes sense to me. Some point earlier I thought you said
that...something about how these were still block formatting
context.
fantasai: Grid items are considered grid level, not block. They
participate in grid FC. But there is blockificaiton
process that changes display values to make them
block-like. We convert anything with a non-block outer
display to a block
dbaron: And one of the blockified things can be a subgrid?
fantasai: You run blockification on every grid item. You run it
through blockification Might be a no-op, but you run
through.
fantasai: Was we decided to do subgrid with a new type the
display-type of a subgrid needs to be declared. If you say
grid or inline grid doesn't really matter.
fantasai: Blockification process turns inline on subgrid to grid.
dbaron: I worried you said display: block could be subgrid
fantasai: No, you can't
florian: Blockification is really dis-inline-ification
fantasai: In a sense. We have outer display type which says how your
behavior is when in flow layout. Outside of flow layout
distinction between inline and block has no meaning and is
ignored. Each display value corresponds to a state.
fantasai: If I take subgrid and put it in a bfc it will not behave
as subgrid, but it'll be the fallback behavior.
<TabAtkins> Core point tho: grid items are blockified, subgrids are
grid items (by definition) but aren't FCs (by
definition), so blockification *cannot* imply
FCification in general.
fantasai: Whether declared inline or block grid it'll make a
difference in participation once in block container
astearns: Back to original issue: We have a choice of keeping things
as we are where blockification and formatting context are
discussed separate. Or we changes that blockification
implies a FC but it can be overwritten in places like
subgrid
astearns: Argument that 2 things are separate is compelling to me
because having both explicit sounds easier to comprehend.
I like that it's explicit
astearns: Argument to tie together is that there may be situations
in the future where we might forget about forcing FC in
blockification case where we need it to happen. Benefit
for the explicit call outweighs danger of forgetting to
make that call in the future.
<florian> since this makes no behavior difference, this is
editorial, and I like to leave it up to the editors to
describe it the way they want. That helps the whole prose
be coherent
<AmeliaBR> Is there any consequence of blockification that *is*
necessary for subgrid? Or can it just be that "grid-items
are blockified (and create a formatting context),
*except* for those with `display: subgrid`"?
<fantasai> AmeliaBR, inline-grid needs to be converted to grid
<fantasai> ('display' value)
dbaron: Blockification without FCification doesn't work in a block
context. In grid it's fine, but in block context it removes
the things that are supposed to be FC. I think that's a
piece Oriol doesn't like. Maybe it's that we never will use
and so it's okay. Might be worth noting.
astearns: Make sense to call that out in all current cases you need
the 2 in a block context
<Oriol> Yes, the problem is with flow layout
<fantasai> dbaron, I missed exactly the sense of what you said, and
the first sentence of the minutes doesn't make sense...
* dbaron thinks the minutes are right
<fantasai> ... ok, I think I understand. Disagree somewhat, though.
<myles> are we discussing a behavior change, or just wording in the
spec?
<astearns> myles just wording, afaik
Rossen: fwiw, from impl experience we've had this model inside our
engine since IE9. During style computation we independently
decide inner layout type, outside layout placement (where
you will be placed), and 2 auxiliary ones, based on the
layout placement and type we compute if you're a BFC and if
you require a stacking context.
Rossen: What I can tell you is they're all independent. But I don't
see why we should unless from inline-block PoV we have to.
fantasai: Address point from Oriol and dbaron where if you happen to
use blockification for block level items
question...example is an inline-block when blockifies
turns into display:block which is porous. Argument is
inline-block should be a block flow-root and a new FC. Not
convinced of that being the expectation.
fantasai: I think that's part of why it's not in CSS
2.1...distinction between block, block layout, and bfc is
not huge. inline-block vs a block do form a pair.
fantasai: Formatting context establishment is a side effect because
they just want this as a block to be a FC, not something
they specifically needed.
<Oriol> I think it may be OK if inline-block doesn't become a
flow-root, but if you explicitly specify flow-root, you
shouldn't lose it
fantasai: I'm not sure what you would expect, but becoming
display:block isn't necessarily unexpected. If you said
inline flow-root it's clear you wanted that but we're
getting into fiddly cases and we decided inline-block and
flow-root are identical
dbaron: I think this is a negative side effect of that. Prob fine
for inline-block, but weird if flow-root.
dbaron: I think I'm okay just concluding here
astearns: And close no change dbaron ?
dbaron: I think no change and a note pointing out that it isn't
great if if you do blockification without FC and people used
flow-root explicitly
astearns: Need to ask Oriol if he's okay closing with a note.
<Oriol> OK, but note that if a future feature allows blockification
without BFC, then it will be more difficult to change
astearns: And would anyone else objects to resolve no change except
adding a note
fantasai: 3 ways forward, to be clear.
fantasai: 1) close no change FC and blockification are independent
fantasai: 2) blockification implies FCificiation so inline-block
converts to block flow-root and we will need an exception
for subgrid
fantasai: 3) revert resolution where we said inline-block and inline
flow are identical and say they're independent and have
same behavior except if you blockify.
fantasai: That lets you when you blockify inline flow-root it
becomes display: flow-root
<dbaron> I'd be fine with (3) based on this discussion but I don't
know why we made that resolution to begin with.
astearns: We're 30 minutes on this issue. My preference would be
close no change and raise a new issue on inline-block and
inline flow-root
fantasai: We had an issue and resolved on the current. Only reason
to re-open is if people want option 3 which gets you
independence for blockification and FCification but also
clarifies the inline flow-root.
astearns: Reopening that with this in mind makes sense and doesn't
change how we'd resolve here.
fantasai: Fair enough
astearns: I'd like to close this.
astearns: Let's resolve that blockification and establishing FC are
independent and we will add a note on the flow-root issue
which can become a github issue to change our previous
decision
<Oriol> Works for me
fantasai: This is last open issue before CR so we need to open the
issue or go to CR
astearns: Objections to keep blockification and establishing FC are
independent
RESOLVED: Keep it that blockification and establishing FC are
independent
astearns: Anyone think we should take up an issue about inline-block
and inline flow-root?
florian: Rather not
dbaron: Don't know context of original decision so hard to know
<fantasai> dbaron, discussion at
https://github.com/w3c/csswg-drafts/issues/1246
astearns: Let's leave at that this week. Those in the discussion
please decide if open new issue.
Rossen: Should we resolve on to CR?
astearns: Let's give another week and go to CR next week.
CSSOM
=====
Replace steps of set a CSS declaration with some constraints
------------------------------------------------------------
github: https://github.com/w3c/csswg-drafts/pull/2924
emilio: Issue is that the latest resolution on how set property
behaved: it always appends to end of declaration so it's
sane with logical prop. It's a nightmare of webcompat and
perf for Gecko and Blink
emilio: We turned it off in Gecko and backed out in Blink. xidorn
had this proposal to let a set of properties in a logical
group and in a UA dependent way that's in same logical group
it need to appear after so setProperty behaves correct
emilio: I think frremy...what xidorn did in gecko which we haven't
landed is that if you get to the case where a prop and
there's another from the group that defers we append the new
prop
emilio: xidorn proposes to define in terms of constraints which I'm
okay, but prefer define properly. Only reason not to do is
proposal from frremy. We need to decide if we're fine
resolving like this or if fine to say it's constraints and
UA can do what they want or define algorithm in spec
frremy: From what I recall my proposal was pretty in line with
constraints. I'm fine with them as defined. Good to have UA
experiment. If it's fine we can refine further. Fine to go
with xidorn proposal for now. It makes a lot of sense.
emilio: Okay
astearns: I agree, emilio. It's good to have things properly defined
once we have impl experience and can determine the
constraints. Happy starting with the PR and adding
emilio: People fine with gecko algorithm as an example?
florian: Sounds okay
astearns: As a note?
emilio: Pretty much.
astearns: Objections to having the PR
https://github.com/w3c/csswg-drafts/pull/2924
as the start of a set of constraints with gecko algo as an
example in a note?
frremy: Sounds good
RESOLVED: Have the PR https://github.com/w3c/csswg-drafts/pull/2924
as the start of a set of constraints with Gecko algorithm
as an example in a note
astearns: Anything else on this?
CSS Overflow
============
How does max-lines interact with hidden content?
------------------------------------------------
github: https://github.com/w3c/csswg-drafts/issues/2421
florian: This started much broader and we're almost done. Just a
corner case we haven't decided explicitly.
florian: The broad topic is which lines do we count when we have
max-lines and a decedent or BFCs or a child also with
max-lines. We resolved we skip when you nest max-lines.
Resolved for most of overflow. Remaining bit is
overflow:clip
florian: overflow:clip is not a BFC so it implies you could the
lines inline overflow:clip. I think close this with no more
changes needed.
Rossen: Is the issue different if overflow:clip is applied to
max-lines container?
florian: This is on descendant
Rossen: How is it different then when on max-line container?
florian: On container it doesn't do anything special and overflow
not terribly relevant.
Rossen: But then you can extract same thing happens with child.
florian: So you're okay no change?
Rossen: Yes
astearns: We could lines in descendant with overflow:clip, but only
not overflowing?
florian: Count all the lines
Rossen: Overflow:clip doesn't effect count of lines
florian: Right
astearns: Gotcha
astearns: Objections to keep current definition such that we could
all lines in overflow:clip descendant?
fantasai: I think this is correct. Might be initially confusing but
it's the right model
RESOLVED: Keep current definition such that we could all lines in
overflow:clip descendant
CSS Text
========
Percentage of 'text-indent' against intrinsically sized box?
------------------------------------------------------------
github: https://github.com/w3c/csswg-drafts/issues/1597
florian: Had previous discussion about text-indent and % and we
resolved which element to resolve % against. Not that
discussion. This is what do we do when intrinsic sizing. If
indent grows the size and depends on the size we've got a
loop
florian: I think we got close to consensus but ran out of time. I
remember that no one had a use case for % text-indent on an
intrinsic size thing so easiest is to say % resolves to 0
and there's no loop.
florian: Alt is min-content. That works for me too. I don't think
this is use case driven.
florian: Only thing to push us toward not-0 is people might want
large negative % to hide stuff. Dunno if done much with
text-indent. So I'd go with 0, but min-content is okay
<Rossen> +1 to 0-
<fantasai> http://software.hixie.ch/utilities/js/live-dom-viewer/?%3C!DOCTYPE%20html%3E%0A%3Cdiv%20style%3D%22float%3A%20left%3B%20border%3A%20solid%3B%20text-indent%3A%2050%25%22%3EThis%20is%20a%20test
dbaron: I think normal thing in these cases is we resolve to 0
during intrinsic-width computation and then resolve width
during layout. Is that what you mean with 0?
dbaron: I think that's how we treat % padding and % margin.
<Rossen> what David said ^
florian: I think that's fine
astearns: Prop: Handle % text-indent in intrinsic size box same as %
in padding and margin
Rossen: This is current behavior as well, we resolve % against
containing block so we can't resolve them during intrinsic
sizing.
astearns: Other opinions?
<dbaron> (I think this is also what Mats was asking for in the
issue.)
<tantek> what Rossen said
astearns: Obj?
RESOLVED: Handle % text-indent in intrinsic size box same as % in
padding and margin
fantasai: % padding and margin on a child of the element
dbaron: I think it's the same as on that element
fantasai: No if you set explicit width resolves correct
Rossen: Not really. Element is being intrinsically size. That's the
same so text-indent can't resolve just like you can't do
min-width etc.
fantasai: But when you do resolve it's the size of the element, not
the size of the parent. Which is different then margins
and padding which look at parent
Rossen: Don't see how child comes into play. But let's move on.
We're on same page
Implement or unship word-break:break-word
-----------------------------------------
github: https://github.com/w3c/csswg-drafts/issues/2390
fantasai: I think it's that we have issue open about adding
non-standard word-break:break-word to CSS. Not
word-break:break-all. This allows you to wrap if you run
out of room. Should have a property with same behavior
where word-wrap:break-word effects intrinsic size of
element
<tantek> can we get intent to unship by whoever supports it if it's
not a compat problem?
fantasai: We were asked to add new value word-break:break-word for
web compat and we pushed back because it's confusing. We
said we'd add value if FF and Edge found themselves
compelled for web compat to impl. They have not so far. To
not go down that path we made word-wrap:break-word have
the same behavior that they would have gotten from
word-break:break-word
* myles is not following
<tantek> myles does Safari/Webkit support word-break:break-word? And
if so, can you unship?
fantasai: I recommend close no change for the moment. If our
attempts to stem the webcompat problem is not successful
we'll assume Edge or FF will file an issue saying we need
this.
astearns: tantek asked on IRC [reads]
fantasai: For the moment I don't think we should ask. We should give
time for impl to catch up with word-wrap:break-word
behavior change so authors can use that in place of
word-break:break-word
fantasai: I think we need to give a year or 2 before we ask blink
and webkit to unship so the web can adapt to standards
compliant way.
florian: Also a chance this transition will be less painful since in
browsers that don't have it, the least bad fallback is to
use the property we recommend.
florian: But we can't unship until we ship alternative.
<emilio> Gecko just implemented, fwiw
<dbaron> emilio, implemented what?
<tantek> emilio: oh well, sounds like we're screwed then
<fantasai> dbaron, https://bugzilla.mozilla.org/show_bug.cgi?id=1472386
<emilio> tantek: dbaron: The new behavior, I mean, sorry:
https://bugzilla.mozilla.org/show_bug.cgi?id=1472386
tantek: I wanted to comment that the process that we should wait on
compat is orthogonal because compat has nothing to do with
what authors want. Compat is are we screwed by what's in the
past. If we're screwed waiting won't change it. If we're not
waiting can make it worse. If you're serious about dropping
you need to do it asap regardless of if the authors have an
equivalent feature. You won't avoid compat in the future by
introducing a future feature. The reasoning is poor
<astearns> +1 to tantek
florian: We're inbetween. This is sufficiently used...
tantek: Is it on the record? I want blink and webkit to say here's
why we can't unship. Let's not presume unshippability
florian: I think we have it. Need to find it
frremy: It was discussed at a F2F and Google said won't unship.
tantek: Do we have a % number to justify not unshipping?
frremy: I think they did.
tantek: If they did did they give us a % for if it drop below
they'll unship? That's what we need for this to be numbers
based
<Rossen> +1 to tantek
fantasai: Blink contacted site owners asking them to change. Site
owners didn't want to change because they needed specific
property behavior. We need time for that.
<tantek> emilio can you link the FF impl bug or FF intent to ship?
<emilio> tantek: https://bugzilla.mozilla.org/show_bug.cgi?id=1472386
fantasai: florian was saying that we're in-between. Usage is not
high enough that Edge and FF need to impl, but too high
for chrome and blink to unship. Gecko has implemented new
property behavior and not non-standard thing
fantasai: We need to wait for that change to deploy across browsers
so site authors will change and then reduce web compat
impact and then let them unship
<fantasai> https://github.com/w3c/csswg-drafts/issues/2390#issuecomment-380422690
<tantek> where is the commitment to implement the new property/value
behavior from others?
<tantek> is FF the only implementation?
astearns: We're overtime. Whether or not we can get unship for
non-standard...Well, this issue is impl or unship so I
think we can resolve not to add non-standard property but
unship question is in the air.
fantasai: My recommendation is we close or defer this issue so it's
not sitting
tantek: Let's defer
frremy: Defer to next level. I like this
florian: Defer good
astearns: Objection to defer this issue for now?
RESOLVED: defer this issue for now