- From: William Birchenough <bircheno@apk.net>
- Date: Sun, 06 Aug 2006 18:54:03 +0000
- To: www-style@w3.org
I have been pondering the Advanced Layout working draft since its
publication. Clearly, this sort of layout functionality could be
important for simplifying the specification of complex layouts. On the
other hand, the proposed syntax concerned me. Finally, though, I put my
finger on *why* it concerns me. Armed with my new self-knowledge, I
come to the list with a proposal...
The /display/ property (along with its proposed sub-properties,
/display-model/ and /display-role/) and the /position/ property are
fundamental to CSS. The proposed syntax would add an interpretation to
/display-model/ for strings and an interpretation to /position/ for
characters. My concern is that the syntax appears very general (using
ordinary, unadorned strings and characters) while applying to a specific
situation (this particular template-based layout). I find this
nonintuitive, but more importantly, it might limit the extension of CSS
for future levels. There might be another equally-useful interpretation
of strings for /display-model/ or characters for /position/ in the
future which is unrelated to this specific layout mechanism. (As an
example, consider the alternate syntax using x's and numbers mentioned
in the section 3 of the Advanced Layout draft. Without some additional
decoration, the primary proposed syntax and this alternate syntax could
not be distinguished.)
On a similar note, I propose a comma-delimited syntax for
/display-model/ over the current space-delimited syntax. Admittedly,
some of my bias against space-delimited strings comes from my C/C++
background, which insists that such strings get smooshed into a single
string by the preprocessor. However, using commas to delimit the
description of individual rows (and any subsequent column information)
might make the grouping more apparent to the human reader, particularly
if the possible row detail expands. (For example, what about
specifying minimum and maximum row heights? Or using a keyword to
declare a stationary slot?) I find
display-model: template ("a@@" 10em 30% fixed, "@@@", "@@b" 10em
30%, 20% * 20%);
slightly easier to understand than
display-model: template ("a@@" (10em 30%) fixed "@@@" "@@b" (10em
30%) 20% 80% 20%);
although others' mileage, of course, may vary.
Thus, the formal description of the new values for /display-model/ and
/position/ might look like this:
Name: display-model
New Value: template ([ <string> [ <row-height> ]? ,]* [ <string> [
<row-height> ]? ] [, <col-width>*]?)
and
Name: position
New Value: slot (<letter>) | same
An example, one might declare:
body { display: template ("a@@",
"@@@",
"@@b",
"@@@",
"c@@",
"@@@",
"@@d") }
img#a { position: slot(a); }
img#b { position: slot(b); }
img#c { position: slot(c); }
img#d { position: slot(d); }
Ultimately, I very much like the ideas within the Advanced Layout
module. Please consider my proposal a refinement in favor of, rather
than an argument against, the ideas presented therein.
Bill Birchenough
Long-Time Reader, Second-Time Poster
bircheno@apk.net
Received on Monday, 7 August 2006 06:13:31 UTC