Frames in web pages were a Big Thing about 10 years ago.( Back when the internet was young, and Netscape was still a private company and a rival to Microsoft’s ‘new’ Internet Explorer.)
If you don’t remember what I mean by frames:
The screen would be divided into a large frame with most of the text,etc, and a smaller menu on the side in a separate frame, that could be scrolled independently of the main screen. Usually, the small frame was the menu tree-so you could scroll down on it to see how the web site was organized, without having to scroll down through the actual content of the site in the main part of your screen.
This was a new technique in version 2 (or 3?) of both the big browsers (netscape and IE). Early web sites would have a warning statement “this site is best viewed with a frames-enabled browser”.
Much better techniques, like server-side templating, DOM manipulation and (these days) AJAX, have largely made them irrelevant.
One exception is the occasional <iframe> for displaying ads, such as used by Gooooooogle right here on the Dope. And the even more occasional hidden <iframe> for doing neat Javascript tricks.
Frames are pretty much pages within a page. This makes it incredibly hard (or impossible?) for a text reader for the blind to read an entire site. It reads the page top to bottom, so if 1 page of the frameset it the menu, and always the menu, the reader would be stuck on the menu page just reading the menu.
Next to go the way of the frames will be tables, for the same reason. I really love tables for layout but in all actuality they are bad for text readers.
Also, people are really bad at managing frames. They’d link to other peoples’ sites from within their frames thus causing the other sites to look bad OR to make the viewer think they are still on the same site but with other people’s content (still happens) and quite often you’d get stuck in a huge loop of endless frames-within-frames.
And, frames are bad for search engines. If you’ve got a frameset HTML page, that page has no data so it’s useless to the search engine. Then one page in the set has your menu and another has content. The search engine will index both pages separately so you’ve got menu HTML pages floating around with no content, and content HTML pages floating around with no menu. That’s not really a good idea for anyone.
Accessibility aside, frames also went out of vogue. Web design is as much like the fashion industry as anything. Once something takes off there are 1000s of copies across the web. That’s why Web 2.0 is pretty homogenous in design, designers have gotten even better at sharing information and styles.
In the same way that we adopt all sorts of style (like those damned rounded corners) we discard things. Blink tags died out because it became universally recognized as annoying as hell. Animated gifs have died a slow death because flash and other options have surfaced. Frames came and went because they went out of style.
One thing Frames did that it was touted for was that it saved on bandwidth - You only need to load the menu once!!!111 OMG!
Then we began going, is 1k for the menu the problem? No it’s the 74 animated 7-up guys on your damn page. And so that became a non-issue fairly quickly as animated gifs faded mostly out.
Further, frames were one of the more confusing aspects of web design to wrap your head around. So newbies rarely learned it unless they felt they had to and once design began showing that you didn’t have to - they didn’t learn it.
The biggest flaw IMO was navigability. If you clicked an external link you’d end up with Yahoo! or somesuch framed by Mike’s Home page with the starry background and sidebar. If you linked to a page meant to be inside a frame, you couldn’t see any of the related pages, because the menu was in the border frame. Google Images and other search engines/portals still use them, annoyingly enough.
Text readers read tables from left to right and from top to bottom. If you put a paragraph of text in the first frame and the next text in the frame to its right, then there’s no problem.
For instance, you could put a graphic (with an alt-tag) in the left hand table box and the text in the right hand table box and a screen reader would read it as if the table wasn’t there.
What caused issues was if you were supposed to read down the left column of a table before reading down the right column of a table (assuming a two-column table with more than two cells). But if formatted properly, table are ADA-compliant for all uses.
You were supposed to make two versions of your content, one with frames and one without. The version without, you’d put on the frameset page, inside <noframes> tags. A non-frame-browser wouldn’t know what to do with the frame or noframes tags, and so would correctly ignore both of them (a browser is supposed to act as though frames it doesn’t recognize weren’t there at all), and would thus display the frame-free version of your content. Meanwhile, a frame-enabled browser would ignore everything contained by the <noframes> tags, and just display the frames. So on a properly-designed frame webpage, any browser could still see the content.
The problem, of course, is that it’s a pain to make two different versions of your content, so almost nobody used the <noframes> tags (or just made the <noframes> content a message that you needed frames, and maybe a link to Netscape or Microsoft).
Here’s a link to a 10-year-old page on “Why Frames Suck”: Why Frames Suck (Most of the Time). By Jakob Nielsen, one of the foremost gurus on web usability.
His basic argument is that the fundamental design of the Web is based on having the page as the atomic unit of information, and frames break that unified model of the Web. And then, on top of that, are all the navigational. referability, and accessability issues people have mentioned.
Oooops. Maybe I need to update my personal website… that I lovingly hand-coded with frames and tables in my freshman year of college.
Oh well, now that I’m out of grad school, they’ll take away the webspace sooner or later.
Le sigh. Le tragedie majestique. That website was, for more than a year, Google’s #1 hit for Dylan Thomas’ “In Country Sleep.” The Hebrew University of Jerusalem linked to it.
I wonder if this is for copyright reasons? Google’s caching of pages has been challenged in the past, and I’m sure it’s displaying of other people’s images in a results page has been, too. When showing a third-party page (not a cache), putting it in a frame perhaps is their way of protecting themselves, because it’s made very clear that it’s external content?
Another sweaty ball sucking reason that nobody’s mentioned: they totally screw with the user’s idea of what the hell the Back button is supposed to do.
Bookmarking a framed page is a challenge, because you have to know where to click and what clicking in any specific spot is actually bookmarking. If you want to preserve the state of all the frames, it becomes impossible to do what you want: A bookmark simply doesn’t contain enough information to restore your session.
So that is a technical, as opposed to a fashion, reason why bookmarks would fall from favor.