W3C home > Mailing lists > Public > www-style@w3.org > December 2011

Re: [css3-layout] A shortcut with numbers instead of letters in a template

From: Andrew Fedoniuok <news@terrainformatica.com>
Date: Fri, 2 Dec 2011 09:28:30 -0800
Message-ID: <BLU165-ds15F0A9137F698B4341B4D3F8B60@phx.gbl>
To: "Bert Bos" <bert@w3.org>, "W3C style mailing list" <www-style@w3.org>
Hi Bert,

Numbers were added in template syntax after initial publishing.
That was made by UI developers requests. Most of the time the template is
used to define layout of pretty small sets. And templates are used a lot.

Having one property that define layout - so without
need of that a bit artificial "{ position: a }" construct -
is significantly  more error prone than any other solution.

This declaration in my case:

flow: "1 3 2";

1. Declares flex-box container
2. Establishes layout and order of elements.

It means "flow:template" covers flex-flow and flex-order (declaration spread 
across children)
properties in robust and predictable manner. And is free from only 
horizontal/vertical limitations
of the flex-box.


-- 
Andrew Fedoniouk

http://terrainformatica.com


-----Original Message----- 
From: Bert Bos
Sent: Friday, December 02, 2011 3:42 AM
To: W3C style mailing list
Subject: [css3-layout] A shortcut with numbers instead of letters in a 
template

On re-reading the documentation of the template layout implementation in
HTMLayout by Andrew Fedoniouk and Ivan Goroun
(http://www.terrainformatica.com/w3/flex-layout/flex-layout.htm) I
noticed something that I hadn't seen before; or maybe seen but
forgotten:

The template syntax allows numbers as a shortcut for simple (but
probably common) cases. E.g. if you have a document like this

    <BODY>
      <DIV>North...</DIV>
      <DIV>West...</DIV>
      <DIV>East...</DIV>
      <DIV>South...</DIV>

you could write this layout:

    BODY { display: ". 1 ."
                    "2 . 3"
                    ". 4 ." }

instead of the equivalent:

    BODY { display: ". a ."
                    "b . c"
                    ". d ." }
    DIV:nth-child(1) { position: a }
    DIV:nth-child(2) { position: b }
    DIV:nth-child(3) { position: c }
    DIV:nth-child(4) { position: d }

I.e., the numbers refer directly to the children of the template
element. The designated children are automatically positioned in the
given slot, without having to write any rules for them.

Advantages:

  - No need to invent names for the slots in the template.
  - Shorter: avoids extra rules and selectors with pseudo-classes.

Disadvantages:

  - An extra thing to learn.
  - Spaces between slots in a templates are required (rather than
    optional), because numbers can have more than one digit.

Clearly, this shortcut is limited to positioning child elements (not
other descendants), and to slots with at most one element in it. You
still need named slots for the other cases.


So the question is, do the advantages outweigh the disadvantages?



Bert

PS. Tracker code: ISSUE-201
http://www.w3.org/Style/CSS/Tracker/issues/201

-- 
  Bert Bos                                ( W 3 C ) http://www.w3.org/
  http://www.w3.org/people/bos                               W3C/ERCIM
  bert@w3.org                             2004 Rt des Lucioles / BP 93
  +33 (0)4 92 38 76 92            06902 Sophia Antipolis Cedex, France
Received on Friday, 2 December 2011 17:29:18 GMT

This archive was generated by hypermail 2.3.1 : Tuesday, 26 March 2013 17:20:47 GMT