[css3-flexbox] We need a BFC for "intended-to-be-replaced" flex items like <object>, <img>

Hi www-style,

I believe the new "elements that want to be replaced will form flex
items" magic is still unclear on (at least) one thing.

( ED spec reference: http://dev.w3.org/csswg/css3-flexbox/#flex-items )

Consider this content, where the <object> doesn't load anything, which
makes it render its contents (naked text in this case):

  <div style="display: flex>
   <object>
     This is a paragraph of text.
     [...]
     Here ends the paragraph of text.
   </object>
  </div>

Presumably we'd expect these characteristics:
 (1) If we add style="width: 100px" on the <object>, it should honor
that width, just as any other flexbox item would.
 (2) If we add style="height: 100px" on the <object>, it should honor
that height, just as any other flexbox item would.
 (3) The <object>'s box should line-wrap its contents (in this case, a
paragraph of text), as if it were a block.

However -- since the <object> is display:inline (by default), it will
actually generate an inline-level box, which won't have any of the above
characteristics.  That's bad.

The <object> really needs a block formatting context for its contents to
render into.  The spec doesn't currently say whether or how it would get
one of those, though.

I think we need to somehow treat the <object> as if it were really
"display:block" (or perhaps "display:inline-block", depending on what we
want the baseline to be).

Does this make sense?  Moreover, would we want to make its display value
*actually compute* to 'block', too?  (I'm not sure whether it'd be more
magical/surprising/hacky to have the display value actually change, or
for us to just behave as if it had changed without actually changing it...)

~Daniel

P.S. Alternate strawman suggestion: We also could say that the <object>
ends up in its own special dedicated anonymous flex item.  That would
give it a block to render into. HOWEVER, it would break all of the
various flex / flex-item-align / etc. properties (since those have no
effect on things inside of anonymous flex items).  We want those
properties to work -- so I don't think we want to do that.

Received on Monday, 21 May 2012 21:49:19 UTC