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

Gérard Talbot 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.

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

 > Here's a test where browsers differ:
 > 
 > http://www.gtalbot.org/BrowserBugsSection/CSS3Multi-Columns/Opera/NewTests/multicol-spanning-margin-collapsing-234.xht
 > 
 > (
 > This test is a modified and customized test from Example XX in
 > http://www.w3.org/TR/css3-multicol/#column-span
 > and in Example 22 in
 > http://dev.w3.org/csswg/css-multicol/#column-span
 > )
 > 
 > Firefox 23 does not support column-span: all, so here, I am only taken
 > into consideration IE10, IE11 (preview), Chrome 29.0.1547.65 and Opera
 > 12.16.
 > 
 > The issue involves the margin collapsing of the margin-bottom of the
 > h2#column-spanning which is 80px with the margin-top (which is 40px) of
 > the p in first column box.

Yes, margin collapsing should occur there.

 > If margin collapsing occurs between those 2 margins, then there should be
 > an 80px (max(80px, 40px)) tall blue area. IE10 and IE11 do that. (Prince9
 > also does that but it fails to render the margin-top of first p.)
 > 
 > If margin collapsing does not occur (because it should not occur) between
 > those 2 margins, then there should be an 120px (80px + 40px) tall blue
 > area. Chrome 29.0.1547.65 and Opera 12.16 do that.
 > 
 > 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

 > If margin collapsing can occur between column-spanning element and blocks
 > in column boxes, then it could be also possible to create tests where
 > several blocks' margin-bottom collapses with a following-sibling
 > column-spanning element.
 > 
 > Another sub-issue is: can margin collapsing occur between 2
 > vertically-adjacent (following sibling) column-spanning elements.

Yes.

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

Received on Friday, 20 September 2013 17:11:37 UTC