If you scroll down the background images will cut off right here ↓

Oh my GOD you're using TABLES?!

The only way to make a background image stretch the entire length of a page is to make it the background of the BODY element. This works out just fine, but what if we want more than one image to run the length of the page, like say different left and right hand borders AND an accent down the center? The common hack of setting both the HTML and BODY elements' heights to 100% works OK at first glance, but if your content is lengthy enough to necessitate scrolling, then the border images will be cut off at wherever the window bottom was before you scrolled. The CSS specification provides NO means of obtaining or using the dimensions of an entire document, just "parent elements". This methodology obviously falls apart once you get to the top of that hierarchy and hit an element without any parents (like the entire document).

Luckily, Safari supports multiple background images, so we can set different borders for any of the four sides of our page. Unluckily, no other browser has bothered to implement this fairly experimental portion of the CSS3 draft standard, so your choices are:

  • Dumb down the page for other browsers and wait for them to catch up
  • Waste weeks of time developing or looking for browser-specific JavaScript and "box model hack" workarounds that barely work
  • Divorce yourself from the notion that CSS is the one true religion and accept the fact that tables still work no matter what the angry internet nerds have to say about it.

Al Gore Invented an Internets

Sure, separating content from presentation sounds like a good idea on paper (and 30 year old MVC concepts are going to revolutionize the entire industry every time some pathologically narcissistic Danish douchebag with a voice that would make Fran Drescher reach for a pair of Hearos® writes an application framework using them), but what's the point of forcing yourself to waste hours kludging together half-assed hack solutions that kinda work just for the sake of using the newest tool out there when you could simply use an older one to achieve superlative results in a few minutes? Is all that effort tracking down browser-specific workarounds really saving you any time in the long run? Will you really remember why that obscurely placed backslash was necessary six months from now? Are you really ever going to go through a dramatic layout redesign without modifying any of your content? Is the world really going to be a better place because you offer seven different lame ass "skins" for your blog control panel in order to make up for the fact that you couldn't come up with one good one?

Now I agree that WYSIWYG editors should be banned and that mindless repetition of font tags is a horrible practice which CSS easily makes short work of, but its usefulness in layout related tasks is more than a little bit crippled by the dilettantish myopia of its creators. The calculator would certainly never have replaced the slide rule if every brand of calculator out there gave a different answer for "1 + 1". Nevertheless, anti-table nutjobs expect you to make exactly that kind of compromise in quality just to achieve some mythical self-defined goal of "standards compliance" nobody looking at your page is ever going to care about. Are you concerned with what instruction set architecture the microprocessor in your calculator uses when you press that equals button? Odds are good you do not so long as it puts a "2" on the display once it's done, and if it doesn't, odds are equally good you won't bother using that calculator again no matter how cool you think it makes you look.

Nerd Rage Is Rarely Effective

Remember, the only people who will be impressed by your blind acceptance of their ridiculous CSS dogma make absolutely hideous websites that look exactly like spreadsheets to begin with. They don't seem to be bothered by the fact that typography on the web is a couple hundred years behind the rest of the world, so why should they care if your layout code is a decade out of vogue so long as the desired result is achieved? Lots of CSS proponents like to point out that Wired magazine's entire site is table free, and I like to point out that Wired magazine's entire site is an annoyingly unreadable mess that makes me want to stab myself in the ass with a white hot toggle bolt*, so I don't particularly give a rip whether or not they use tables (which they do by the way). They'll scream "OH IT'LL BE UNMAINTAINABLE", but Amazon strangely seems to be maintaining themselves pretty well with a nice sane mixture of CSS and tables while simultaneously turning a profit—something few bloggers can claim no matter how many Google ads they plaster along their glish.com ripoff sidebars. Ultimately, no matter what paradigm you subscribe to, websites are not easy things to maintain. If they were nobody would make any money doing it. If there's no sprawling non-semantic markup to trip up the person who has to update your work five years from now, then terse, obfuscated code riddled with poorly documented hacks will do it just as well.

I honestly can't blame Microsoft for not paying any attention to anything these whiny W3 idiots say or do, because the W3 is just as parochial and clueless as any jackass Redmond has to offer. CSS is one tool among many. When it works, use it. When it doesn't, throw it away and grab something else until somebody fixes it. There's no reason why you should feel ashamed of achieving your goals just because some unemployed open source evangelist doesn't have any apart from getting Warcraft to run on his custom compiled Ububian Linux kernel for iPods. Chop three legs off a table and you've got a wonderful one-trick monopod named CSS.

*To be fair, the printed version of Wired magazine is also an annoyingly undreadable mess that makes me want to stab myself in the ass with a white hot toggle bolt. At least there is symmetry.

And now some padding to make sure you get a scrollbar:

Make sure your standards actually work before publishing them.

Make sure your standards actually work before publishing them.

Make sure your standards actually work before publishing them.

Make sure your standards actually work before publishing them.

Make sure your standards actually work before publishing them.

Make sure your standards actually work before publishing them.

Make sure your standards actually work before publishing them.

Make sure your standards actually work before publishing them.

Make sure your standards actually work before publishing them.

Make sure your standards actually work before publishing them.

Make sure your standards actually work before publishing them.

Make sure your standards actually work before publishing them.

Make sure your standards actually work before publishing them.

Make sure your standards actually work before publishing them.

Make sure your standards actually work before publishing them.

Make sure your standards actually work before publishing them.

Make sure your standards actually work before publishing them.

Make sure your standards actually work before publishing them.

Make sure your standards actually work before publishing them.

Make sure your standards actually work before publishing them.

Make sure your standards actually work before publishing them.

Make sure your standards actually work before publishing them.

Make sure your standards actually work before publishing them.

Make sure your standards actually work before publishing them.

Make sure your standards actually work before publishing them.

Make sure your standards actually work before publishing them.

Make sure your standards actually work before publishing them.

Make sure your standards actually work before publishing them.

Make sure your standards actually work before publishing them.

Make sure your standards actually work before publishing them.

Make sure your standards actually work before publishing them.

Make sure your standards actually work before publishing them.

Make sure your standards actually work before publishing them.

Make sure your standards actually work before publishing them.

Make sure your standards actually work before publishing them.

Make sure your standards actually work before publishing them.

Make sure your standards actually work before publishing them.

Make sure your standards actually work before publishing them.

Make sure your standards actually work before publishing them.

Make sure your standards actually work before publishing them.

Make sure your standards actually work before publishing them.

Make sure your standards actually work before publishing them.

Make sure your standards actually work before publishing them.

Make sure your standards actually work before publishing them.

Make sure your standards actually work before publishing them.

Make sure your standards actually work before publishing them.

Make sure your standards actually work before publishing them.

Make sure your standards actually work before publishing them.

Make sure your standards actually work before publishing them.

Make sure your standards actually work before publishing them.