Re: [CSS21] Overflow and scroll bar behavior

[was: [CSS21] Contradiction in the spec with auto-offset fixed-position
   elements]

Andrew Fedoniouk wrote:
> As you know straightforward implementation of overflow:auto when size
> of content is close to the size of viewport is potentially
> oscillating function. And could not be implemented without use of
> heuristics limiting the number of oscillations. (Size of viewport is
> changing when scrollbars appear). If you will move scrollbars out of
> the viewport calculation become stable two step process.

How about following algorithm:
1) Try to fit content without scroll bars
2) If 1 fails, add vertical scroll bar and try again
3) If 2 fails, remove vertical scroll bar, add horizontal
    scroll bar and try again
4) If 3 fails, add both vertical and horizontal scroll bars
    and render the content.

This algorithm is incremental and UA might skip step 3. This algorithm
never oscillates between two states during rendering because UA should
return to step 1 only if content changes or UA window has been resized.

> And no one UA handles this 'properly'  as there are no solution at
> all in the given model.
>
> E.g. here is the document
> http://www.terrainformatica.com/w3/overflow.htm and here is a
> screenshot in FireFox
> http://www.terrainformatica.com/w3/overflow-ff.gif As you may see
> scrollbars are gone but they should be there. "Heuristics" in effect.

The problem isn't "heuristics" but the fact that Firefox has about 100
pixel minimum height for the viewport, regardless if that high viewport
can fit the window. If you slowly increase the height of the window,
 you see that vertical scroll bar doesn't change and horizontal scroll
 bar slowly becomes visible again. That is, horizontal scroll bar is
 there as it should. Unfortunately it cannot always fit the visible
 window area. That's a bug but it isn't because the scroll bar behavior
 would be somehow "undecideable" or something.

> IE handles this particular situation better but it has problems with
>  overflow:auto in different places.

IE always displays vertical scroll bar so it doesn't have similar
problems with content width.

--
Mikko

Received on Tuesday, 16 November 2004 17:15:50 UTC