The "Frame" feature set in HTML was created by Netscape
for version 2.0 of its Navigator product. It allows the browser window to
be sub-divided into smaller viewable areas for use in keeping certain content
constant while other content is scrolled or replaced. Each of these areas
(also known as "frames") represent a completely separate
sub-document which can be individually controlled and addressed. Frames also
allow an author to specify the placement and usage behaviors of these embedded
HTML sub-documents. It is a very nice concept, but as specified only works
essentially as a visual paradigm - eg: how would a Braille browser present
frames? In addition, the visual results of a document layout specified with
frames is often VERY resolution dependent. An alternate navigation sometimes
offered for frames is a simple navigable list of sub-frame documents.
Note: At least one of the fundamental problems with
the original design of framed documents has been addressed by HTML 4.0.
It broadens the scope of the NOFRAMES element so that it can be
used in sub-documents as well as in the frame layout document. This allows
for better backward compatibility and reduces the need for multiple versions
of the same document. Repeatable sections which would normally be in separate
frames can now exist in NOFRAMES elements in subdocuments as well - older
browsers will see the noframes content and frames-capable browsers will ignore it.
This element controls the layout of sub-documents on the browser
display. It allows the display to be divided up into a specified
number of rows or columns with specific or dynamic sizes. Each
frameset structure can be further divided into more rows and columns
by nesting other FRAMESET structures within its contents.
This is the element that actually defines what the content of the
frame will be. This element indicates a URL of a document to place
within the space provided for it by the FRAMESET layout definition.
Other properties of displaying the frame, such as resizing and
scrolling capability, are also controlled through this element.
The FRAMESET element takes the place that is normally occupied by the
BODY element. This eliminates the traditional structure of an HTML
document, so the NOFRAMES element comes to the rescue in these
situations. This element allows for backward compatibility with older
browsers by allowing a traditional BODY structure to be placed within
a NOFRAMES element. Browsers that DO support frames will ignore the
NOFRAMES element, and older browsers will only see the traditional
HTML document structure in place. All browsers should be happy.
Frames: To Use or Not?
There are many readers out there who do NOT like to read
pages that use frames. Indeed, there are some compelling arguments against
their use. Such arguments mostly involve issues with the speed and
implementation of the frames concept.
There are situations when their use is also very helpful, and the arguments
in favor of frames in these cases is for better intuitive navigation. In
the end, it is the author that must decide whether to create a document
using frames or not, and whether the advantages outweigh the disadvantages.
Advantages to Using Frames
Elements that the user should always see (such as navigation bars,
copyrights, and titles) only need to be specified once.
Table of contents are more intuitive - One frame can contain a Table
of contents that can be clicked upon. The results can be displayed in
an adjoining frame.
Side-by-side presentation of multiple documents allows queries to
be posed and answered on the same page.
Disadvantages to Using Frames
Frame layout is often heavily dependent on resolution. Unintended
scrollbars are often displayed which can eclipse the frame content.
Reduction of the overall amount of usable space for sub-document
content usually occurs as the number of sub-frames increases.
An extra download request must be made for each sub-frame. Each of
these requests can be more and more costly as the download bandwidth
for the user is reduced.