I was <FRAMED>, I didn't do it!

In Hindsight...

Another article I'm quite proud of. Published on the almost last day of year 1999 this article was written because I was fed up with having to fight frame-based designs that were dumped on my desk. Frames were used mainly as a design-feature - for example to keep the footer on the page static. (I've sinned on that one myself, today I ponder who really would like to see the footer all the time..?!). Frames are inherently evil, evil evil evil, and I'm so extremely glad to see that they're disappearing more and more.
Could you imagine Google, eBay or Amazon with a frame-based design... thinking of it makes me nauseous... So, from 30th of December 1999 till today; Frames Suck!

This article is something that has been giving me pain for many years. I cannot believe that folks use frames! My basic statement is that "Frames suck", and "Frames suck bigtime!". I get put down for that statement all the time, this article is meant to fix that (I know I'm naive). This article is aimed at Gaz n Bamp, not to piss you off, but to give you facts. (You know, facts, not fiction).

Now, note this;

If you want to comment on this article, I require you to read the following articles. Sure, you can read my stuff first, but, do read the article before you speak and look stupid. The articles are "Why Frames Suck (Most of the Time)", "Top Ten Mistakes in Web Design" and "Top Ten Mistakes Revisited Three Years Later". These articles are written by the Web God; Dr. Jakob Nielsen. If you do web sites, you should worship the bytes this guy writes!

Why should you read those articles?

Well, first of all, the earliest of them is written in the middle of 1996, I guess your website was not even born by that time. The second of all, Jacob is a Dr, and as we know, Dr means, "Do Respect me". But, thirdly, and most important, this is facts, not fiction, you need to know this!

From now on I will except you to have read at least the first of the articles mentioned above.
First some frame basics, just to remind you. We all know that frames reside in a frameset. This feature kills the backbone of the web; the URL. However, that is only one of the problems. The web is based on that what the uses sees is one document. Let's play that this was not the case; You'd have tags to denote to which page this actual page's contents belongs, maybe something like this; <DOCPARENT SRC="content_frm.html">, and such. Fact; We don't have tags like that. Deduction; Frames was not meant to be. Whoever you are, you know that things that are not meant to be, things that are not planned, tend to get a bit messy. Just like a band aid on a band aid; No real solution, but a temporary 'stop the freakin bleeding'-thing.

Introducing Frames

If you have been developing websites for a while, and done some 'scripted' sites, you know how much the hazzzzle increases when you introduce frames. This is what happens; You have frames, you start developing the site, you notice that you have to do something, but you have frames. So, you start developing a solution that will make the site, well, quite frames friendly. You get on to the next stage and notice that your "frames friendly solution" needs some more friendliness, so you modify you solution. And you go on like this till you have a bunch of pure excellent runny crap!
An excellent example is when you design a site and you have some kind of a top navigation. Let's say you have two frames, "nav" and "main", you develop the "nav" document to do it's stuff, and suddenly, you need do fix one frame to do one thing, and the other frame to do another thing, but you have very many different options, and you kinda don't know how to do it....... shitttttt!!!
Another example is when you build a site, and you actually think of the folks that will be using it, so, you want them to be able to bookmark a site. We all know that bookmarks and frames don't mix that well.
Well, let's say this is what happens; Visitors jumps to "Main Page", from there goes to, "About the company" and from there to "Staff" from there you go to "Sales". But, now there is a problem since we have been thinking; that the visitors should be able to bookmark the "Staffs" section, so we made that into a new frameset. What do we have now; Use goes into the main frameset, clicks in the frameset, clicks again and moves to another frameset, selects "Joe Black", all is well.. But; we also created a navigational device that looks something like this; Main page --> About the company --> Staff --> Joe Black Now, that is not a problem, right, nooooooooooo, not at all, as long as you're going upstream.
But when you're going downstream, from "Joe Black" to "Main page", we're all in trouble!!!
This is why; the user is in the frameset of "Staff", and has clicked into "Joe Black", so you go back to "Staff" which has got a TARGET="_top" because it is a frameset. So now our user wants to hop one step backwards, to "About the company", now how do you do this??? "About the company" is in another frameset!!!

How do you solve this problem?

Well, luckily there are 'solution's, however, this gets us to the point of this article;

If you build an advanced site and user friendly site with frames, you will, without exception, be facing yourself building solutions to bad solutions. You will always be making patches to patches. Most things that you do with frames, you end up building barriers around it! If you would kill the frames, you would have a much happier life.

Is frames never a good idea?
Well yes it is actually, that is when you want to do 'an application'. Let's say we have picture database, where you can search for a special keyword attached to a picture. The search results could be a frameset where the names of the pictures would be displayed in one scrollable frame and one frame that displays the image. However, you'd have to carefully consider the pro's n con's of a system like this!!!

Why are frames used so widely?
Well, the answer is quite simple; Frames are easier to create and maintain by 'non technical' staff. It's quite easy to fix a footer that reminds of the print footer used in the old world. It's harder to explain to the gfx designers that they should use a program code in their HTML code instead. So, if you learn Frames, you don't have to master a) Layers or b) Tables. Pathetic! Do it the right way instead!

Phew, this was a huge bit of text!!! Hope you had time to read it, and I hope you think it was worth it. "Frames suck"

A funny thing is that one super to me once said that "We're creating next generation websites here" When I told him; "Frames suck". The guy tells me what to do, what an expert! I stand by my word; Frames suck! And I base that on my knowledge of today. I'm being cocky here, but that guy who told me that has go no idea about what websites are about....

To conclude;

  • If you do a frames based website, you'll either end up accepting the flaws of frames or building around them!
  • Frames were never intended to display different layout items, in fact, no part of the web ever has been.
  • Frames were intended to provide a way to display two separate documents in one visual layout.
  • Frames should not be used by default.
  • Frames suck!