- From: Håkon Wium Lie <howcome@opera.com>
- Date: Mon, 25 Mar 2013 19:22:21 +0100
- To: Simon Sapin <simon.sapin@exyr.org>
- Cc: www-style@w3.org
Also sprach Simon Sapin:
> > Right. We could add a constraint that:
> >
> > #top-right.width = max (#top-left.width, #top-right.width )
> > #top-left.width = max (#top-left.width, #top-right.width )
> >
> > Or something.
>
> The automatic table layout algorithm is already very complex. (Well,
> it’s not specified, but the next best thing describing what browsers do
> is http://dbaron.org/css/intrinsic/ )
It's complex. But all UAs have implemented it. And I believe we can
refer to it without defining it.
> I think that a single algorithm that supports tables (with colspan,
> column groups…) *and* at the same time supports additional constraints
> like the above is just not realistic.
It seems to be only one extra constraint: that the width of 'top-left'
and 'top-right' remain the same. To me, this seems like a simpler way
to describe margin boxes.
> So, maybe doing "like tables" with a different algorithm that accounts
> for these constraints? I believe this is exactly what’s currently in the
> spec:
>
> http://www.w3.org/TR/2013/WD-css3-page-20130314/#variable-sizing
Perhaps. But I can read and understand one description and not the
other. (Unless I really take time off from email and such :)
> > The dimension/size of #page-area must be the strongest constraint --
> > we never want margin boxes to change the dimension/size of the page
> > area. This could probably be represented formally by "!important" or
> > something.
>
> !important only affects the cascade, and does not change the fact that
> 'width' on table cells is actually more like 'min-width'. With wide
> enough unbreakable content (aka. 'min-content' or preferred minimum
> width) table cells can be wider than specified by 'width'.
>
> So this kind of constraint needs to be in the layout algorithm, which
> raises the same issue as above.
We can remove the corner left/right margin boxes from the "table" --
their dimensions are given. This leaves three cells in the "table".
I tried describing layout with:
<table>
<col width=1*><col width=*><col width=1*>
<tr><td id=top-left-corner><td id=top-left><td id=top-center><td id=top-right><td id=top-right-corner></tr>
</table>
But it seems that proportional spacing isn't supported the way I
remember from the past.
We also support 'margin-*' properties for margin boxes. This is not
the case for table cells and the models therefore differ. We could
re-align the two models by removing support for 'margin-*' properties
in the margin context. Hmm.
http://www.w3.org/TR/2013/WD-css3-page-20130314/#margin-property-list
> > > > http://people.opera.com/howcome/2013/tests/margin-boxes.jpg
> > >
> > > I think there is no difficulty in doing this in a printed book. If you
> > > know the size of your paper, fonts and content, just use fixed
> > > (non-auto) heights and margins.
> >
> > Hmm, would that work? On a right page, the top right margin box (the
> > one who leaves a dark mark on the edge of the paper) must be taller
> > than the top page margin. So, the dark margin boxes don't really fit
> > into the grid of 16 margin boxes.
>
> Always use the same page-margin box, give it a fixed height, and vary
> its margin-top to position it:
>
> @right-top {
> height: 2cm;
> margin-top: -2cm; /* 0, 2cm, 4cm, … */
> }
Yes, that could work. Hacky, but still.
-h&kon
Håkon Wium Lie CTO °þe®ª
howcome@opera.com http://people.opera.com/howcome
Received on Monday, 25 March 2013 18:23:05 UTC