Re: [css3-multicol] margin collapsing between column-spanning element and blocks in column boxes: if, when?

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. 

Yes?

 > I rather we kept it that way (and add it to the spec if it's
 > unclear). Collapsing spanner margins with regular content is going to
 > cause rather unpredictable behavior, and writing or reading a spec for
 > that doesn't sound like fun, either.

Right. I'd rather not ;)

 > > I don't want to add normative text about this as it's a terribly
 > > complex part of CSS 2.1 and the multicol spec should not try repeat it
 > > or change it. But having an example makes sense -- I've added an
 > > example 26 in the current ED:
 > >
 > >   http://dev.w3.org/csswg/css-multicol/#column-span
 > 
 > That's example _27_, right? 

Yes.

 > This only illustrates margin collapsing
 > between spanners. That's much less problematic, and I have no strong
 > opinions on that matter. If you like to think of spanners as regular
 > blocks inside a multicol container (which has temporarily lost its
 > multicolumnedness), it's kind of natural that sibling spanners get their
 > margins collapsed.

Yes.

 > >  > If margin collapsing can occur between column-spanning element and blocks
 > >  > in column boxes, then it could be possible to create tests where several
 > >  > blocks' margin-top collapses with a preceding-sibling column-spanning
 > >  > element.
 > >
 > > Yes, but remember that margins are trucated after a natural break:
 > >
 > >   http://dev.w3.org/csswg/css-break/#break-margins
 > 
 > 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.

-h&kon
              Håkon Wium Lie                          CTO °þe®ª
howcome@opera.com                  http://people.opera.com/howcome

Received on Sunday, 6 October 2013 13:38:43 UTC