- From: Bert Bos <bert@w3.org>
- Date: Tue, 15 Mar 2005 14:16:49 +0100
- To: W3C CSS List <www-style@w3.org>
On Thursday 10 March 2005 19:03, Anne van Kesteren wrote: > I was experimenting a bit with 'position:fixed' on my personal site > and some other things and I re-discovered an "annoying bug." > > Lets say you have a fixed header to simulate frames or so. Since > every standards advocate out there is saying CSS can replace frames I > guess people might try it out. > > #header{ > position:fixed > width:100%; > height:5em; > } > > Now lets say you have a link to the comments on a post. That link is > a same-document reference since the comments are on the same page as > the post. The link is |#comments|. > > Obviously, it links to something that is hidden under the header if > the object it links to is smaller than 5em in height > > A solution for this "problem" would be very helpful. I'm not sure if > the CSS WG should deal with it though. If not, please let me know and > I'll forward it to some other WG. If you position something fixed to the top, maybe other content that risks scrolling underneath it should be contained inside a box that is itself fixed as well. > > ... > > I have discussed the problem with some other people as well and a > solution is probably not easy, if not impossible. Perhaps > 'position:fixed' should not be recommended for replacing frames at > all. > > (Although I guess, when @viewport arrives, you could have a special > attribute that says how much space should be reserved at the top.) The Device Independent working group has offered to help the CSS working group with designing a system for "high-level layout" a.k.a. "grid layout" that can replace absolute & fixed positioning (and float hacks and HTML tables) in most cases, and that would be simpler to use, resizes better (because all positions are relative to the grid) and, especially, more modular, in the sense that it is easy to replace one grid with another without touching the rest of the style. You can then, for example, use Media Queries to import a 3-column layout for a wide screen, or a 1-column layout for a narrow screen. It should also be more modular in the sense that you can draw the layout graphically (with a little, interactive tool) and have it transformed into CSS, and vice versa: from CSS into a diagram, without requiring the tool to understand any other properties than the one or two that define the layout. Inferring a layout from absolute positioning and floats as they are currently is almost impossible. The system is unlikely to use @viewport, though, since @viewport would allow only one layout per page, whereas our layouts have to be recursive (like nested tables). But you can put a layout on the root element and use 'height: 100%' to get the same effect. (My latest idea for a syntax is to basically draw the grid in ASCII graphics: display: "xxxxx" ":::::" "x:xxx" represents a block divided into three parts: the first is full-width and the third is three times as wide as the second. By addding more values you can force columns or rows to a specific size. 'position: 3 1' then puts an element in the 1st slot on the 3rd row. This is not the only idea that circulates, however. There is also a draft from 1996[1], an idea based on 'move-to' properties to rearrange elements, and there is an idea to just state the number of rows & columns in the grid and then specify an element's position and size in grid coordinates. And, finally, there is an idea to "pull" rather than "push" content into a grid: element's themselves don't have position properties, but each grid cell has a selector that says what content goes there.) [1] http://www.w3.org/TR/NOTE-layout Bert -- Bert Bos ( W 3 C ) http://www.w3.org/ http://www.w3.org/people/bos W3C/ERCIM bert@w3.org 2004 Rt des Lucioles / BP 93 +33 (0)4 92 38 76 92 06902 Sophia Antipolis Cedex, France
Received on Tuesday, 15 March 2005 13:16:57 UTC