Thursday, March 23, 2006

Why I quit helping with 100% height questions

I just want to say why I'll never help with "100% height" (usually "height at least as tall viewport and/or content") questions any longer.

First, if you know why you're asking for it, the solution is very simple. "100% height" almost never means what people asking about it want it to mean. If they thought harder, the solution is simple. Also, the questions arise because they haven't realized all the possible usable HTML elements.

Second, the few times it's actually "useful" break other expected web behaviors. For example, the "footer always at the bottom of viewport/content" is probably a usability hazard. Among other things, it breaks up the content. Potentially removing the footer by a significant amount of the screen. It also has different behavior for long content versus short content (as compared to position:fixed type behavior). In addition, most uses probably break other good design practices (too much emptiness).

Third, it teaches bad habits. The "100% height" technique is a carry-over request from table hacks. It does not require the questioner to think about their site as simple blocks (ie. rectangles) defined by content. Most requests are answered simply by looking at the blocks at hand (html, body, etc).

Fourth, people spend a significant amount of time worrying about a special case. I usually ponder, when looking at the questioners site, is it really worth worrying about? How about simply making your content better? How about a "better design" for the web?

Finally, "100% height" is usually NOT a design requirement. Web developers often get "fixed" designs from designers and assume that the best translation is "100% height". This is a mistake. Indeed, it reflects a genuine misunderstanding of the process of creating web designs. It's true, of course, that simply leaving the space blank is not the answer either. However, turning a fixed layout into a web layout usually means some compromising and some planning. Usually, the needs are simply a "faux column" derivative.