If you can read this, you might want to skip straight to the content. Also, kindly take a moment to read my rant about Web design—especially if you’re wondering why this site looks a bit…dull.

Web Design Sucks

…or how I leaned to not hate CSS2 and really loathe IE

by Ben Goren

First things first

Let’s face it: the World Wide Web is not a friendly place for graphic designers.

Considering the Web’s origins, that’s hardly surprising. When Tim Berners-Lee kicked it all off lo these many years ago, he came at things from the perspective of a computer scientist. While there is certainly a good deal of art involved with computer science, I think it safe to say that there aren’t many strong connections between that kind of art and the kind used to lay out, say, a major publication. As a result, Mr. Berners-Lee did an excellent job creating a resource that connects information in a marvelous way…but he apparently gave no thought at all to how to present that information.

The Web is, and always has been, a semantic medium. Web designers are supposed to specify the meaning of the text—this is a third-level headline; that’s a bibliographic entry; there’s some example computer code—and let the browser figure out how best to display it. If you’re a computer scientist, that’s great: you don’t have to worry about all that messy graphic design stuff. Just come up with some algorithms to consistently display things, and you’re done. If you’re a graphic designer…it sucks. As Mr. Cheney would say, it sucks “big time.”

Originally, waaaay back when, there was absolutely nothing you could do about it—but that was hardly a problem, since the only ones publishing things on the Web were computer scientists. By the time graphic designers started to enter the scene, HTML had evolved enough that a few kludges were possible. Some people did some (not-so-)clever things with re-sized 1-pixel images, but most streched, prodded, and pulled HTML tables to do the trick.

Using tables for Web design is exactly like using Excel for print design. If you really, really have to, you can, but no sane designer would even consider doing so unless there was no alternative. Guess what? There wasn’t.

The situation might have been almost tolerable if it weren’t for the fact that every browser—including every minor update of each of the browsers—rendered pages differently. It is impossible to design a single HTML page that looks the same (or even basically similar) on every computer. There are some wild tricks possible, but none are easy, practical, or even reliable.

CSS to the rescue…

The W3C has since done some decent work to remedy the situation. Cascading Style Sheets still require a semantic structuring of Web pages, but allow a pretty decent level of control over what goes where on the page. It can’t hold a candle to, say, PostScript, but it’s trivial to extract data from a CSS-enhanced HTML document and quite difficult to do so from most PostScript files.

…or not.

So, you’d think that, with something like CSS, (almost) all graphic design woes would be gone. Were it so! Sadly, there are few browsers in widespread use that faithfully render CSS. The specification might say, for example, “draw this line outside this box,” but a browser will instead draw the line inside the box. Or at some random place on the page…

Choices

Every Web designer must make a choice about what browsers to support and what extra work or design limitations are necessary as a result. I’ve made my choice; here it is, along with my reasons.

For all the whining I’ve done here about graphic design, there is one principle of Web design that reigns supreme: content is king. Pretty sites with no good information flounder, while even ugly (but still navigable) sites with good content thrive. This is as it should be: the ultimate goal of a graphic designer is to enhance the presentation of the information.

Therefore, all my pages are designed with minimal HTML that should render cleanly—if plainly— on any browser (with one major exception, noted below). Ancient versions of Mosaic shouldn’t have any trouble (though I don’t have any available to actually test). Text browsers, such as Lynx will also work just fine. My site should be as readable as any other on a PDA or Web-enabled cellphone.

If your browser supports CSS2 (or, more precisely, the @import imperative), you’ll also see all my fancy graphic designs. Everything will be neatly laid out in columns; there’ll be lots of pretty colors; you’ll see some varied typography; and more.

The bad and ugly

It gets worse. There are broswers—most notably recent versions of Internet Explorer, the product of a criminal organization—that claim to adhere to the standards but don’t. Specifically, perfectly valid layouts that make use of the “fixed” positioning scheme and that look fine in real browsers look, when viewed with IE, like the stuff I clean out of my cat’s litterbox.

I had previously said, “To Hell with ’em.” Microsoft has made its fortunes by breaking the law, standards, and common decency; why should I compromise just to work around their buggy pile of^W^Wproduct? I still feel that way, but decided that, due to the nature of the ’Net, I might well wind up turning away potential clients. So, I re-arranged this, moved that around, screwed with this other thing, and came up with something that looks rather similar and doesn’t make IE choke quite so badly. It also doesn’t look quite like what I want it to; for one thing, I really don’t want the gaps around the section buttons at the top of the page.

Like I said, Web design sucks.

What to do?

If you want to make the Web a place that designers can use in a consistent and standard manner without being tied into any one company, I strongly urge you to out Mozilla, Netscape, and Konqueror, all of which are excellent—and free—browsers. I’ve never used it, myself, but I’m told that Opera is also quite good and standards-compliant, although it’ll cost you either some money or some eyeballs.

While I’m on the topic, you also won’t see any JavaScript, Flash, ActiveX, Java, or other sorts of evils on my site. Support for JavaScript is almost as fractured as that for HTML; Flash is annoying an unnavigable; ActiveX is horribly insecure, proprietary, and controled by convicts; and Java is too bloated, and JVMs too buggy, for browser use.

Whew! I feel better now. Thanks for reading.