- From: Mikko Rantalainen <mikko.rantalainen@peda.net>
- Date: Mon, 26 Feb 2007 15:28:29 +0200
- To: www-style@w3.org
Daniel Beardsmore wrote:
> Let me take you through a common example: a set of thumbnails.
>
> How would we normally do this? A table. Not sensible. Tables demand that a
> particular number of columns will fit onto the screen, and cannot take advantage
> of wider monitors. They imply a relationship between the data that does not
> exist: the colums and rows have no significance.
>
> How should we do this? I would say, a list.
>
> Formatting? Inline block. e.g.
>
> <ul class="thumbs">
> <li>
> <img src="...">
> Caption
> </li>
>
> .thumbs li {
> display: inline-block;
> margin: 0.2em; padding: 0.23em;
> background-color: #009966;
> }
>
> The thumbnails can be any size up to the desired size (say, 200x200 pixels), so
> my previous mail on pad-to would be used to space each one out to fill the
> intended size. Otherwise, imagine a div around the image for that purpose set to
> width and height of 200px.
>
> Without captions this would work: they'd all be the same height and width. But
> we want captions too. And the captions have no defined width, nor can it be
> defined. The width is dependent on not just the length of the string, but on the
> user's choice of font and font size. We are either going to fix the width of the
> <li> to the image width (in which case, the captions may wrap) or the <li>
> will all grow to random sizes according to the caption.
>
> What we need -- and so far, nothing has ever provided a way to deal with this
> effectively -- is adaptive mutual sizing.
>
> That is to say, specify a size for each li element, based adaptively on the
> group as a whole.
>
> For example:
>
> .thumbs li { adapt-size: both }
>
> This will trigger a visual user agent to calculate the width and height needed
> to show each <li>, and choose the largest size found.
As David Woolley already told you, this is not how the CSS works. Here's
how a CSS implementation could work (IMHO):
.thumbs li { height: auto; width: auto; sizing-group: "thumbnails"; }
That is, redefine "auto" for height or width to check if the element
belongs in an "sizing-group" and if it does, compute the height or width
to be the maximum of all elements in that group when contents of those
elements are shrink-wrapped (and define further what "shrink-wrapping"
means). If height or width is set to some other value but auto, then the
sizing-group magic wouldn't apply.
--
Mikko
Received on Monday, 26 February 2007 13:28:43 UTC