#[1]fuzzy notepad Atom Feed [2]fuzzy notepad RSS Feed
[3]fuzzy notepad
Sat Feb 01, 2020
[4][blog] Old CSS, new CSS
I first got into web design/development in the late 90s, and only as I
type this sentence do I realize how long ago that was.
And boy, it was horrendous. I mean, being able to make stuff and put it
online where other people could see it was pretty slick, but we did not
have very much to work with.
I’ve been taking for granted that most folks doing web stuff still
remember those days, or at least the decade that followed, but I think
that assumption might be a wee bit out of date. Some time ago I
encountered a [5]tweet marvelling at what we had to do without
border-radius. I still remember waiting with bated breath for it to
be unprefixed!
But then, I suspect I also know a number of folks who only tried web
design in the old days, and assume nothing about it has changed since.
I’m here to tell all of you to get off my lawn. Here’s a history of CSS
and web design, as I remember it.
__________________________________________________________________
(Please bear in mind that this post is a fine blend of memory and
research, so I can’t guarantee any of it is actually correct,
especially the bits about causality. You may want to try the [6]W3C’s
history of CSS, which is considerably shorter, has a better chance of
matching reality, and contains significantly less swearing.)
(Also, this would benefit greatly from more diagrams, but it took long
enough just to write.)
[7]The very early days
In the beginning, there was no CSS.
This was very bad.
My favorite artifact of this era is the book that taught me HTML:
O’Reilly’s [8]HTML: The Definitive Guide, published in several editions
in the mid to late 90s. The book was indeed about HTML, with no mention
of CSS at all. I don’t have it any more and can’t readily find
screenshots online, but here’s a page from HTML & XHTML: The Definitive
Guide, which seems to be a revision (I’ll get to XHTML later) with much
the same style. Here, then, is the cutting-edge web design advice
of 199X:
Screenshot of a plain website in IE, with plain black text on a white
background with a simple image
“Clearly delineate headers and footers with horizontal rules.”
No, that’s not a border-top. That’s an
. The page title is almost
certainly centered with, well, .
The page uses the default text color, background, and font. Partly
because this is a guidebook introducing concepts one at a time; partly
because the book was printed in black and white; and partly, I’m sure,
because it reflected the reality that coloring anything was a huge pain
in the ass.
Let’s say you wanted all your s to be red, across your entire site.
You had to do this:
1
...
…every single goddamn time. Hope you never decide to switch to blue!
Oh, and everyone wrote HTML tags in all caps. I don’t remember why we
all thought that was a good idea. Maybe this was before syntax
highlighting in text editors was very common (read: I was 12 and using
Notepad), and uppercase tags were easier to distinguish from body text.
Keeping your site consistent was thus something of a nightmare. One
solution was to simply not style anything, which a lot of folks did.
This was nice, in some ways, since browsers let you change those
defaults, so you could read the Web how you wanted.
A clever alternate solution, which I remember showing up in a lot of
Geocities sites, was to simply give every page a completely different
visual style. Fuck it, right? Just do whatever you want on each
new page.
That trend was quite possibly the height of web design.
Damn, I miss those days. There were no big walled gardens, no Twitter
or Facebook. If you had anything to say to anyone, you had to put
together your own website. It was amazing. No one knew what they were
doing; I’d wager that the vast majority of web designers at the time
were clueless hobbyist tweens (like me) all copying from other clueless
hobbyist tweens. Half the Web was fan portals about Animorphs, with
inexplicable splash pages warning you that their site worked best if
you had a 640×480 screen. (Any 12-year-old with insufficient resolution
should, presumably, buy a new monitor with their allowance.) Everyone
who was cool and in the know used Internet Explorer 3, the most
advanced browser, but some losers still used Netscape Navigator so you
had to put a “Best in IE” animated GIF on your splash page too.
This was also the era of “web-safe colors” — a palette of 216 colors,
where every channel was one of 00, 33, 66, 99, cc, or ff — which
existed because some people still had 256-color monitors! The things we
take for granted now, like 24-bit color.
In fact, a lot of stuff we take for granted now was still a strange and
untamed problem space. You want to have the same navigation on every
page on your website? Okay, no problem: copy/paste it onto each page.
When you update it, be sure to update every page — but most likely
you’ll forget some, and your whole site will become an archaeological
dig into itself, with strata of increasingly bitrotted pages.
Much easier was to use frames, meaning the browser window is split into
a grid and a different page loads in each section… but then people
would get confused if they landed on an individual page without the
frames, as was common when coming from a search engine like AltaVista.
(I can’t believe I’m explaining frames, but no one has used them since
like 2001. You know iframes? The “i” is for inline, to distinguish them
from regular frames, which take up the entire viewport.)
PHP wasn’t even called that yet, and nobody had heard of it. This weird
“Perl” and “CGI” thing was really strange and hard to understand, and
it didn’t work on your own computer, and the errors were hard to find
and diagnose, and anyway Geocities didn’t support it. If you were
really lucky and smart, your web host used Apache, and you could use
its “server side include” syntax to do something like this:
|
|
|
|
(actual page content goes here)
|
Mwah. Beautiful. Apache would see the special comments, paste in the
contents of the referenced files, and you’re off to the races. The
downside was that when you wanted to work on your site, all the
navigation was missing, because you were doing it on your regular
computer without Apache, and your web browser thought those were just
regular HTML comments. It was impossible to install Apache, of course,
because you had a computer, not a server.
Sadly, that’s all gone now — paved over by homogenous timelines where
anything that wasn’t made this week is old news and long forgotten. The
web was supposed to make information eternal, but instead, so much of
it became ephemeral. I miss when virtually everyone I knew had their
own website. Having a Twitter and an Instagram as your entire online
presence is a poor substitute.
…
So, let’s look at the Space Jam website.
[9]Case study: Space Jam
Space Jam, if you’re not aware, is the greatest movie of all time. It
documents Bugs Bunny’s extremely short-lived basketball career, playing
alongside a live action Michael Jordan to save the planet from aliens
for some reason. It was followed by a series of very successful and
critically acclaimed [10]RPG spinoffs, which describe the fallout of
the Space Jam and are extremely canon.
And we are truly blessed, for 24 years after it came out, its website
is [11]STILL UP. We can explore the pinnacle of 1996 web design, right
here, right now.
First, notice that every page of this site is a static page. Not only
that, but it’s a static page ending in .htm rather than .html, because
people on Windows versions before 95 were still beholden to 8.3
filenames. Not sure why that mattered in a URL, as if you were going to
run Windows 3.11 on a Web server, but there you go.
The CSS for the splash page looks like this:
1
Haha, just kidding! What the fuck is CSS? Space Jam predates it by a
month. (I do see a single line in the page source, but I’m pretty sure
that was added much later to style some legally obligatory
policy links.)
Notice the extremely precise positioning of these navigation links.
This feat was accomplished the same way everyone did everything in
1996: with tables.
In fact, tables have one functional advantage over CSS for layout,
which was very important in those days, and not only because CSS didn’t
exist yet. You see, you can ctrl-click to select a table cell and even
drag around to select all of them, which shows you how the cells are
arranged and functions as a super retro layout debugger. This was great
because the first meaningful web debug tool, [12]Firebug, wasn’t
released until 2006 — a whole decade later!
Screenshot of the Space Jam website with the navigation table's cells
selected, showing how the layout works
The markup for this table is overflowing with inexplicable blank lines,
but with those removed, it looks like this:
That’s the first two rows, including the logo. You get the idea.
Everything is laid out with align and valign on table cells; rowspans
and colspans are used frequently; and there are some
s thrown in
for good measure, to adjust vertical positioning by one line-height at
a time.
Other fantastic artifacts to be found on this page include this header,
which contains Apache SSI syntax! This must’ve quietly broken when the
site was moved over the years; it’s currently hosted on Amazon S3. You
know, Amazon? The bookstore?
Okay, let’s check out [13]jam central. I’ve used my browser dev tools
to reduce the viewport to 640×480 for the authentic experience
(although I’d also have lost some vertical space to the title bar,
taskbar, and five or six IE toolbars).
Note the frames: the logo in the top left leads back to the landing
page, cleverly saving screen space on repeating all that navigation,
and the top right is a fucking ad banner which has been blocked like
seven different ways. All three parts are separate pages.
Screenshot of the Space Jam website's 'Jam Central'
Note also the utterly unreadable red text on a textured background, one
of the truest hallmarks of 90s web design. “Why not put that block of
text on an easier-to-read background?” you might ask. You imbecile. How
would I possibly do that? Only the has a background attribute! I
could use a table, but tables only support solid background colors, and
that would look so boring!
But wait, what is this new navigation widget? How are the links all
misaligned like that? Is this yet another table? Well, no, although
filling a table with chunks of a sliced-up image wasn’t uncommon. But
this is an imagemap, a long-forgotten HTML feature. I’ll just show you
the source:

I assume this is more or less self-explanatory. The usemap attribute
attaches an image map, which is defined as a bunch of clickable areas,
beautifully encoded as inscrutable lists of coordinates or something.
And this stuff still works! This is in HTML! You could use it right
now! Probably don’t though!
[14]The thumbnail grid
Let’s look at one more random page here. I’d love to see some photos
from the film. (Wait, photos? Did we not know what “screenshots”
were yet?)
Screenshot of the Space Jam website's photos page
Another frameset, but arranged differently this time.
1
They did an important thing here: since they specified a background
image (which is opaque), they also specified a background color.
Without it, if the background image failed to load, the page would be
white text on the default white background, which would be unreadable.
(That’s still an important thing to keep in mind. I feel like modern
web development tends to assume everything will load, or sees loading
as some sort of inconvenience to be worked around, but not everyone is
working on a wired connection in a San Francisco office twenty feet
away from a backbone.)
But about the page itself. Thumbnail grids are a classic problem of web
design, dating all the way back to… er… well, at least as far back as
Space Jam. The main issue is that you want to put things next to each
other, whereas HTML defaults to stacking everything in one big column.
You could put all the thumbnails inline, in a single row of (wrapping)
text, but that wouldn’t be much of a grid — and you usually want each
one to have some sort of caption.
Space Jam’s approach was to use the only real tool anyone had in their
toolbox at the time: a table. It’s structured like this:
 | ...
...
...
A 3×3 grid of thumbnails, left to the browser to arrange. (The last
image, on a row of its own, isn’t actually part of the table.) This
can’t scale to fit your screen, but everyone’s screen was pretty tiny
back then, so that was slightly less of a concern. They didn’t add
captions here, but since every thumbnail is wrapped in a table cell,
they easily could have.
This was the state of the art in thumbnail grids in 1996. We’ll be
revisiting this little UI puzzle a few times; you can see live examples
(and view source for sample markup) on a [15]separate page.
But let’s take a moment to appreciate the size of the “full-size,
full-color, internet-quality” movie screenshots on my current monitor.
Screenshot of one of the Space Jam website's full-size photos,
fullscreened on my monitor
Hey, though, they’re less than 16 KB! That’ll only take nine seconds
to download.
(I’m reminded of the problem of embedded video, which wasn’t solved
until HTML5’s