- From: Håkon Wium Lie <howcome@opera.com>
- Date: Wed, 28 Dec 2011 17:25:12 +0100
- To: "Tab Atkins Jr." <jackalmage@gmail.com>
- Cc: www-style@w3.org
Tab wrote:
> > > For example, in the canonical regions example, the current Regions
> > > spec uses Grid to line up the regions. You use some relatively
> > > complicated combination of multicol, column spans, and page floats to
> > > achieve the same thing. I find the former *much* more readable and
> > > easy to use, but currently it's impossible to do so.
> >
> > The current regions spec [1] doens't have any grid code in it, as far
> > as I can see. Could you post the code example you like? Is it the one
> > you posted here?:
> >
> > http://lists.w3.org/Archives/Public/www-style/2011Dec/0290.html
>
> Oh, whoops, yes, the code in that email is what I'm thinking of.
Ok, here it is:
/* Region related style for redirecting content flows */
#article {
flow-into: article_flow;
}
#region1, #region2, #region3, #region4 {
flow-from: article_flow;
}
/* positioning and sizing of the region elements */
#page {
width: 800px;
height: 600px;
grid-template: "aaa.e"
"....e"
"bbb.e"
"....e"
"c.d.e";
grid-rows: 52% 4% 20% 4% 20%;
grid-columns: 30% 5% 30% 5% 30%;
}
#regionA { grid-cell: a; }
#region1 { grid-cell: b; }
#region2 { grid-cell: c; }
#region3 { grid-cell: d; }
#region4 { grid-cell: e; }
I like the ascii-art syntax for 'grid-template'. But I also see
several problems with this code:
- it uses elements for regions
- the layout is fixed; there is no way to add more columns if more
content is poured into the flow, and the size and aspect ratio of
the image is fixed
- pagination isn't addressed -- e.g., there is no way to say that
region e should be on the next page
- it's quite verbose
Here's how it can be done using multicol:
.article { columns: 3 }
.article img { column-span: 2 }
.article .lead { column-span: 2 }
The above example doesn't create regions, though -- the "lead"
element is structural. To use regions, the code is slightly longer:
.article { columns: 3 } /* or better: a width in ems */
img { column-span: 2; width: 100% }
article::region(1) { /* selects column 1 */
column-span: 2;
float: top;
visibility: collapse; /* so that column 2 moves in */
height: 3em; /* or something */
}
But still only seven lines compared to the 20 or so lines in the
grid-based syntax (not counting markup). As for readability, others
should judge, but personally I find the compact code easier to read.
More importantly, the multicol-based alternatives:
- don't abuse elements
- provide reusable, scalable designs that adjust to:
-- different image sizes
-- differnet page widths
-- different content lenghts
-h&kon
Håkon Wium Lie CTO °þe®ª
howcome@opera.com http://people.opera.com/howcome
Received on Wednesday, 28 December 2011 16:26:09 UTC