Re: [css21] Initial containing block definition (editorial)

On Mon, Dec 8, 2008 at 3:58 PM, fantasai <fantasai.lists@inkedblade.net> wrote:
>
> Grant, Melinda wrote:
>>
>> Section 10.1 says:
>> The containing block in which the root element lives is a rectangle
>> with the dimensions of the viewport, anchored at the canvas origin
>> for continuous media, and the page area for paged media. This
>> containing block is called the initial containing block.
>>  This wording seems to allow the interpretation that the page area
>> has the dimensions of the viewport.  I suggest rewording to:
>>  The containing block in which the root element lives is a
>>  rectangle called the initial containing block.  For
>>  continuous media, it has the dimensions of the viewport, and is
>>  anchored at the canvas origin; it is the page area for paged media.
>

The ICB should have been specified design.

There is a desire to read properties off of the initial containing
block. These would be:-

height and width
scroll height
scroll offsets

There is a desire to set and get scrollbar presence.

CSS 2.1 does not suggest if a window scrollbar should be considered a
property of the viewport or instead as part of the the ICB.

Instead, a CSS 3 module should define a way of obtaining dimensions of
the ICB. CSS2.1 should state whether the scrollbar should be
considered as part of the viewport or not.

CSSOM Views fumbles on the same problems that current implementations
do of how to provide properties of the ICB:

documentElement's clientHeight is special - it means viewport (except
Opera < 9.3)*.
documentElement's scrollHeight is special - gets window.scrollMaxY
documentElement's scrollTop is special - gets and sets the pageYOffset
documentElement's css overflow is special - controls scrollbar on the viewport.

IE has always treated the root element as the ICB. What IE consideres
"root" is either BODY or HTML, depending on the version and rendering
mode.

This creates a problem in that properties on documentElement have
different meaning, the other type of meaning can't be obtained in this
way - documentElement.clientHeight does not return the content+padding
area of documentElement. It returns the height of the viewport.

Instead, their should be an object that contains properties of the
ICB. This could be a property of the window or defaultView.

var icb = document.defaultView.icb.

icb.scrollHeight;
icb.overflow;
icb.scrollTop;
icb.background;

It would be worth even considering a style object off the ICB.

clientHeight should not be ambiguous.

*Opera had implemented the CSSOM Views draft, as it was specified at
that time (2007). The draft has changed recently, and so did Opera's
implementation. This caused compatibility problems with a lot of
scripts.

> I would change that last clause to
>  for paged media it is the page area
> (i.e. put the for clause in front). Other than that, I agree this
> makes the text a lot clearer.
>
>> I also suggest 'page area' link to its definition in Section 13.2.
>
> Agreed.
>
> Filed as CSS2.1 Issue 93, marked editorial:
>  http://wiki.csswg.org/spec/css2.1#issue-93
>
> ~fantasai
>
>

Received on Tuesday, 9 December 2008 03:58:32 UTC