- From: Morten Stenshorne <mstensho@opera.com>
- Date: Tue, 08 Oct 2013 08:26:21 +0200
- To: Håkon Wium Lie <howcome@opera.com>
- Cc: www-style@gtalbot.org, "W3C www-style mailing list" <www-style@w3.org>
Håkon Wium Lie <howcome@opera.com> writes: > Morten Stenshorne wrote: > > > > > > > One issue that I wish would be explicit and clarified in the spec is if > > > > > > margin collapsing can occur between a column-spanning element and blocks > > > > > > in column boxes. If it can occur, then the spec should say so, then define > > > > > > under which conditions along with an example. If it does not occur, then > > > > > > the spec should say so. > > > > > > > > > > The answer is: yes, margin collapsing occur as per the normal rules. > > > > > That is, margin collapsing will not to through the content/border box > > > > > of a spanner or a multicol element (both are BFCs), but the margins of > > > > > a spanner will collapse with its surroundings. > > > > > > > > This has been discussed before, and the opposite conclusion was reached. > > > > > > > > http://lists.w3.org/Archives/Public/www-style/2010Oct/0774.html > > > > > > You're right that the two conclusions differ, if not being opposite; > > > it seems to make sense that spanner collapse with others spanners and > > > its containing block. But not with sibling elements. > > > > Isn't the containing block of a spanner always the multicol container > > itself? > > Yes. > > > And since a multicol container establishes a new BFC, its > > margins cannot collapse with margins of spanner children. > > The example I have in mind is a spanner that naturally appears right > before or after a page break. Its bottom (or top) margin will be > "collapsed" with the multicol container. "Collapse" with the page (or "outer fragmentation context", to be more precise), not the multicol container, I assume? > But perhaps "collapsing" isn't the right term, the spec uses > "truncated": > http://dev.w3.org/csswg/css-break/#break-margins <div style="columns:3;"> .... <!-- natural page break occurs here --> <div style="column-span:all; margin-top:50px;">...</div> </div> You're saying that the 50px top margin should be eaten and forgotten about when it adjoins a natural/unforced break? I agree. > > I think a spanner's margins should only collapse with margins of sibling > > spanners, and nothing else. > > Yes, modulo the "truncated" case above. Exactly. > > > > How about this one: > > > > > > > > <div style="columns:2; column-rule:solid;"> > > > > <div style="column-span:all; margin-bottom:50px;">spanner</div> > > > > text > > > > <div style="break-before:column; margin-top:50px;">x</div> > > > > </div> > > > > > > > > I really don't want those two margins to collapse. :) > > > > > > Agree. They wouldn't if we exclud sibling elements. > > > > > > But the second inner DIV (a) could possibly collase with the margins > > > of the outer DIV if (a) appears after a natural break. > > > > The outer DIV is a multicol container, and multicol containers establish > > a new BFC, so they cannot collapse with children, can they? > > Correct, this is expressed in example 12. > > I've changed example 27 to say: > > Spanners create new block formatting contexts, but their margins can > be changed by their surroundings. In this example, two spanners > naturally end up at the top of a page. The top margin of the first > spanner is truncated due to being after an unforced break. The > bottom margin of the first spanner collapses with the top margin of > the second spanner. The bottom margin of the second spanner > collapses with the top margin of the subsequent element. > > to > > Spanners create new block formatting contexts, but their margins can > be changed by their surroundings. In this example, two spanners > naturally end up at the top of a page. The top margin of the first > spanner is truncated due to being after an unforced break. That doesn't look like an unforced break; that looks like the FIRST page. And since there's a blue border preceding the spanner as well, it's not even at the beginning of the page. So this looks wrong to me. > The > bottom margin of the first spanner collapses with the top margin of > the second spanner. Yes. > However, the bottom margin of the second spanner > does not collabse with the collapses with the top margin of the > subsequent element. If you do an "s/collabse with the collapses/collapse/", I agree here too. But perhaps the subsequent element should specify a top margin, so that the example shows this more clearly? > http://dev.w3.org/csswg/css-multicol/ -- ---- Morten Stenshorne, developer, Opera Software ASA ---- ------------------ http://www.opera.com/ -----------------
Received on Tuesday, 8 October 2013 06:26:27 UTC