- From: John '[Beta]' Drinkwater <john@nextraweb.com>
- Date: Tue, 25 May 2004 12:22:46 +0100
- To: www-style <www-style@w3.org>
- Message-ID: <40B32C86.60303@nextraweb.com>
liorean wrote:
>
> Something I feel missing from CSS is that there is no way to swap the
> positions of content without using positioning, and positioning is
> limited in that it removes the elements from their natural places in the
> normal document flow. I would like to propose a property that allows for
> changing the rendering order within the normal document flow.
>
> 'rendering-order'
> Value: <integer> | <integer> [relative | absolute] | auto
> Initial: auto
> Applies to: all elements
> Inherited: no
> Percentages: N/A
> Media: all
> Computed value: <positiveinteger> absolute
>
This is only a quick type up; i'll add more to it later.
I'd been looking into a similiar extension to css for this; but I'd been
contemplating float-index: (behaving much like z-index). The Browser would sort
any floated element in the same container according to this value.
Also, multiple elements can have the same order, if they are set to different
float: values. So I could have {float: left; float-index:1;} & {float: right;
float-index:1;}
If the attribute was missing, the flow would still be defined by document
(source) order.
'float-index'
Value: <integer> | auto
Initial: auto
Applies to: floated elements
Inherited: no
Percentages: N/A
Media: all
As for a use case; I have a website that has numerous sections that I would like
to rearrange via css. Either have them all on the left, or in two columns either
side of the content.
Encapsulating the group of elements I want to position would cause a problem -
these sections aren't related, so shouldn't be defined like that in the data.
The content of this website is dynamic, the size of each section is not
specifically known, and it shouldn't be fixed to specific heights, or have
overflow: hidden applied.
source
<body>
<div class="d1">1</div>
<div class="d2">2</div>
<div class="d3">3</div>
<div class="d4">4</div>
<p class="maincontent">....</p>
</body>
style 1
.d1, .d2 { float: left; }
.d3, .d4 { float: right;}
[--1--] |.........| [--3--]
[--2--] |.........| [--4--]
|.........|
style 2
.d1, .d2, .d4 { float: left; }
.d2 { float-index: 1; }
.d4 { float-index: 2; }
.d1 { float-index: 3; }
.d3 { display: none; }
[--2--] |.................|
[--4--] |.................|
[--1--] |.................|
|.................|
or style 3
.d3 { float: left; float-index: 1; }
.d2 { clear: both; float: right; }
.maincontent { float: left; clear: left; }
[-----------3-------------]
|.................| [--2--]
|.................|
This can be done via client javascript, and thats the way it's going to be done;
but I think that the css spec should gain a feature like this, css is for
styling, it should be able to ignore source order. Because what is the source,
if not data to flesh out the style ?
Cheers,
John
Received on Tuesday, 25 May 2004 07:24:03 UTC