Tables And Frames
OK. First. Frames make navigation HARD if you're not using a
frames-enabled browser. Damn, you gotta hate the way that blind people
still exist, right?
[as an aside here, iframes. Don't do it]
Fine. Let's get frames out of the way:
You have two reasonable choices here: Keep Them or Dump Them.
1) "I'm keeping the frames"
Fine. You think they're really necessary [you /don't/ need navigation
permanantly at the top or the bottom or a side, ok? You /really/ don't. In
this day & age, people know how to work web browsers. They've learnt
that navigation is going to be at the top. They don't mind scrolling up
to find it.]
If you're using hidden frames, just stop it. You're either doing something
you shouldn't, or keeping state. If you're keeping state, that's what
cookies are for. If you're doing something you shouldn't, fucking stop it.
There are two things you can do for accessibility:
a) Each frame can be given a name.
When someone goes to a site without frame names, they see this:
[left.html]
[top.html]
[middle.html]
[bottom.html]
Which very nearly gives any indication of WTF they are.
All you have to do is add something to your frameset akin to:
and do similar for each frame.
And that's it.
Note that part of this is giving each page it's own title. A lot of
pointy-clikky editors don't do this, but what if someone ever clicks on
one of your nav links and clicks "open in new window"? They see the title
on the browser as being "(untitled)". Which is pretty unprofessional.
In this example, left.html should have something in the
section like
Navigation for MySite
Easy.
b) noframes tags
The other thing is that there is such a thing as a a tag. This
goes outside of your frameset, and you put the BODY of an HTML page in it:
You don't appear to support frames
Luckily, I'm a competent web designer, so here are links to what you
were looking for:
Leftside Navigation
Some useless eye candy
Some content
Some more useless eye candy
2) "How can I get rid of them, then?"
I'm very glad you asked. You can use tables. Just put the content of
each frame into a table. This is easiest to do with frames that're
clearly top-n-bottom, but anything works:
[noting that this code is just an example, and won't even work if your
server doesn't support SSI. And if you're designing webpages and don't
know what SSI is, all your internet priveliges have just been revoked]
Going left and right is pretty much the same. Note that the tables are
basically EXACT replacements of your FRAMESETs. It's even a
no-bloody-brainer. Just remember to get out the head & tail stuff [eg
the and the tags. You /do/ have DOCTYPE tags, right?]
Moving on, we have Tables
I approve of tables. Let's get that straight, too. I use them, they're
great. But just a couple notes:
Browsers that don't support them just put the text in in the order they
come to it. You get a carraige return between cells, but that's it. What
this means is that:
|--------------------------------------|
| Table Head 1 | Table Head 2 |
|--------------------------------------|
| Content cell 1 | Content cell 2 |
|--------------------------------------|
Will come out in the notables browser looking like:
Table Head 1
Table Head 2
Content cell 1
Content cell 2
So, I have three recommendations based on this:
a) Put content horizontally:
|--------------------------------------|
| Table Head 1 | Content cell 1 |
|--------------------------------------|
| Table Head 2 | Content cell 2 |
|--------------------------------------|
So it appears in a notables browser like this:
Table Head 1
Content cell 1
Table Head 2
Content cell 2
b) Simply only ever have one column:
|------------------|
| Table Head 1 |
|------------------|
| Content cell 1 |
|------------------|
| Table Head 2 |
|------------------|
| Content cell 2 |
|------------------|
c) [Most complicated] Put tables side by side:
|---------------------|---------------------|
| |----------------| | |----------------| |
| | Table Head 1 | | | Table Head 2 | |
| |----------------| | |----------------| |
| | Content cell 1 | | | Content cell 2 | |
| |----------------| | |----------------| |
|---------------------|---------------------|
Finally, a note on screen sizes.
We do not all have super-duper-mega-ultra-stupidly-expensive monitors.
Some of us don't like super-duper-mega-ultra-resolutions.
My father is getting worse sighted by the day. He has a 19" monitor. And
he runs it at 800x600.
He's just a random guy who's using the internet. There are many like him.
In order to get the same visibility, if he were using something affordable
like a 17" or 15" monitor, he'd probably be running at 640x480. The
people really do exist. In fact, they're pretty common. It's called
"visually impaired", and you need to take it into account.
Imagine you're trying to sell something. It's gonna be pretty hard for
him to buy it on the web if he can't read it. Literally. By designing a
website that doesn't work below 1024x768 or 1280x1024, you have actually
just lost his custom. Think about it.
There are two real solutions for this problem:
a) Design a webpage that can be resized without problems. This is the
harder of the two options, but it won't take up less than half the screen
space of a 1280x1024 monitor.
b) Put your content into a table that's about 600 pixels wide. Give or
take a few, it doesn't matter, but do remember that in an effort to make
stuff prettier, Microsoft is adding eye candy to the frames of windows at
every possible opportunity, and some browsers have sidebars. Remember the
"Search" thingy in IE that takes up the left hand many-many pixels?
And something I hate to do, but here comes some flat-out abuse:
Your webpage /can/ be made to do this. You may think it can't, but it
can. If the BBC and CNN can both make their pages work perfectly all the
time, I'm pretty certain yours can. If you really don't think they can,
then perhaps you need to rethink your occupation.