- From: Markus Ernst <derernst@gmx.ch>
- Date: Thu, 24 Jan 2013 23:16:00 +0100
- To: www-style list <www-style@w3.org>
Discussing the scrollbar aspect of vw/vh units, several use cases came
to my mind where I missed a possibility to take a possible scrollbar
into account while setting widths in the past:
Use case 1: Centered web page
Very many web pages are horizontally centered using a container element
that has the left and right margins set to "auto". Usually, they suffer
from a horizontal jump of 8px when navigating between pages that have a
vertical scrollbar or not. In my authoring practice, I had several
discussions on this effect with clients or designers who demanded the
page to stay in it's place regardless of the amount of content. Anyway,
after I suggested to force scrollbars, they accepted the jump as the
lesser evil (still considering it as an evil).
Use case 2: Scrolling table with fixed header
You put a table into a container div in order to make it scrollable
inside the page. You use a negative top margin to hide the table header,
and duplicate the header in a separate table that you put on the top of
the container div. Now, if there are enough rows to trigger a vertical
scrollbar, the columns of the visible header table do no longer match
the columns of the scrollable table. (There are actually jQuery plugins
for scrollable tables available, that do exactly this.)
The solution I propose is a property to be set on the container element
that affects the calculation of the widths of the children (feel free to
propose better wordings):
width-calculation: [normal | reserve-scrollbar]
When overflow computes to "auto", and the UA displays a non-overlayed
scrollbar at all, "width-calculation: reserve-scrollbar" will shrink
child elements to fit inside a possible scrollbar, if they have no width
specified, and accordingly reduce the result if widths are specified in %.
Use case 1 would then simply be solved via
body { width-calculation: reserve-scrollbar }
In use case 2, the property will be applied to the containers of both
header and content tables, so that the tables have identical widths
regardless of whether a scrollbar is triggered or not.
I hope I have made myself understandable - I am sorry I am not a native
English speaker (resp. writer).
--
Markus
Received on Thursday, 24 January 2013 22:16:33 UTC