Re: New draft: multi-column

Clover Andrew writes:
> > A new draft of the CSS3 module "multi-column layout" has been
> > published.
> 
> I find myself somewhat concerned by this spec. Okay, it's only a
> draft, so many details are missing, but some of the *implied*
> changes to layout algorithms seem to make things very tricky
> indeed.
> 
> A change in flow from one column to the next can seemingly occur
> in the middle of inline content. Meaning a block is no longer a
> rectangle; it can span any arbitrary collection of rectangles.
> This has implications for border, margin, background alignment
> and so on that should be specified. It makes positioning and
> scripting difficult - how can you read/set the position and
> size of a rectangle that's split over three columns, for example?

It is true that laying out columns in a pleasing way is not trivial,
but it is essentially the same as laying out pages. The same issues
with borders and background already exist when you print a document.

There are doubtlessly things that are underspecified (such as the
alignment of the background, probably), but as far as borders and
backgrounds are concerned, I think we didn't introduce any that
weren't there already.

> 
> It seems to me that multi-column layouts are most useful for
> print media rather than a scrolling viewport. But how do
> multi-column layouts work over page breaks? Does the break
> force column balancing? Do the page-break-* properties of
> children work relative to the page? Do we need column-break-*
> properties? Can you put a multi-column layout inside another
> multi-column layout? Could multi-page layouts be considered
> a special case of multi-column layout?

Yes, I would agree that columns are most useful for print, because on
screen the column will never fit in your window and you'd have to
scroll up and down. (Which doesn't seem to keep some designers from
using columns on screen anyway...)

I don't know if it is necessary to balance columns on each page. It
doesn't seem to matter much one way or the other.

Probably the 'widow' and 'orphan' properties should apply to columns
as well as to pages.

And something like a 'column-break', analogous to 'page-break', seems
reasonable as well.

> 
> The multi-column spec as outlined here looks nice and simple,
> but what happens when it's combined with positioning? Bi-di?
> Ruby? mid-column floats are nice, but what happens when
> there's not enough space for them? When they get in the way
> of a standard floating element? Column-span is handy, but
> it seems to also affect how many columns the *previous*,
> not-spanned elements take up. Can a "column-span: 2" element
> also run through a second double-width column, filling
> four columns in all?

I think there are reasonable, even obvious answers to all these
combinations. A positioned element can clearly contain columns.
Bi-directionality works, I expect, like for tables: if the element has
a 'direction' of 'rtl', then the columns grow from right to left.

We should probably indeed give some rules for what happens to a
mid-column float for which there is no room. Maybe it becomes a left
or right float instead.

I don't know what you mean by a "double-width column."

> 
> I'm sure there's many more subtleties I haven't yet seen,
> but already this is making the task of layout extremely
> complex, for a feature I personally believe is of limited
> usefulness on the web. Multi-column layouts are great for
> paper, but in a window that you have to scroll down to
> read, they're only practical for relatively small amounts
> of text, otherwise you'd have to keep scrolling down and
> up again to get through it.

True, but printing should be supported, too, don't you think?

> 
> Sorry if this sounds overly critical; these are just the
> objections that came to mind whilst reading the spec. There
> are, OTOH, many things I *do* like in the spec, like the way
> the number of columns isn't (as I had feared) fixed. I just
> didn't mention them. :-)



Bert
-- 
  Bert Bos                                ( W 3 C ) http://www.w3.org/
  http://www.w3.org/people/bos/                              W3C/INRIA
  bert@w3.org                             2004 Rt des Lucioles / BP 93
  +33 (0)4 92 38 76 92            06902 Sophia Antipolis Cedex, France

Received on Monday, 22 January 2001 08:58:47 UTC