- From: Andrew Fedoniouk <news@terrainformatica.com>
- Date: Fri, 20 Mar 2009 10:54:32 -0700
- To: "Tab Atkins Jr." <jackalmage@gmail.com>
- CC: Bert Bos <bert@w3.org>, www-style@w3.org
Tab Atkins Jr. wrote:
> On Fri, Mar 20, 2009 at 12:14 AM, Andrew Fedoniouk
> <news@terrainformatica.com> wrote:
>
>> The most non-trivial part was implementation of parsing of the template.
>> Not parsing per se but handling of border cases. Say, it is not clear what
>> this means:
>> flow: "a a"
>> "b c"
>> "d a"; ?
>> "a" area is not continuous here. Error handling should be clearly defined by
>> the specification.
>> I propose for now to declare that each named area shall be a)
>> of rectangular shape and b) unique and so continuous.
>>
>
> The spec already says that areas must be rectangular. Two separated
> regions do not make a rectangular shape. Thus the rule is invalid.
>
It just says "Non-rectangular slots are illegal" [1]. But it is silent
about multiple rectangular regions.
Thus "unique" must be there for the completeness.
>
>> I propose to drop '@' feature completely, instead to declare following:
>> All immediate children of the container-template that have no float:"XX"
>> defined are replaced as they occupy single row that is appended to the main
>> grid. Easy to implement and quite predictable.
>>
>
> That sounds like an excellent rule for what to do when there *isn't*
> an @ in the template, but that's no reason to drop @ entirely. The @
> made pushing "everything else" into a slot very easy. Without it you
> have to use a properly scoped * selector, and make sure that all your
> other positioning rules have selectors with enough specificity to
> override it.
>
'@' implies creation of artificial container for multiple elements. That
container requires pseudo-element
selector to deal with. Practice ( display:table et al ) shows that such
artificial containers are very hard to deal with - they
clash with other CSS features in various hard to predict ways.
Artificial containers should be avoided as much as possible.
'@' problem is close to this one:
If we have say this:
flow: "a b"
"a b";
And two elements with the same value of float: "a"; so they compete for
the same spot in the template.
What will happen in this case? Current spec again assumes creation of
artificial containers.
And yet it uses 'display-role' that was gone long time ago.
I propose to drop that multiple-elements-in-single-slot feature
completely. Instead to use first-in-first-serve rule.
That will simplify significantly the whole mechanism - you do not need
to define dimensional metrics of rows/columns -
standard width/height/margin of elements can be used for defining their
metrics. In proposed spec two systems of
dimensional constraints compete for computed values of the same
elements. Not good at all.
>
>> And I'd like to note again that flex units are highly desirable in such
>> cases.
>>
>
> Flex units are already in the template spec. They use * as the unit.
> (They are also in the Grid Positioning spec.)
>
These are not units in common sense. E.g. flex *units* are useful in
other layout schema's. Think about
display:table/table-cell. Without flexes that display:table and friends
have little sense if to compare this feature with
the <table>.
--
Andrew Fedoniouk.
http://terrainformatica.com
Received on Friday, 20 March 2009 18:02:57 UTC