Note. Frames are not supported by the HTML 3.2 standard but they are likely to appear in a future HTML standard. There is no published standard, the notes here relate to observed practice supported by IE and NN.
The use of frames splits the browser window into a group of distinct sub-windows or panes. Each pane can be used to display a separate WWW page, it is also possible for user action in one pane to effect the content of another pane.
The organisation of the browser window into frames is via a frameset which specifies a number of frames and the their relative geometry. Further framesets can be included within a frame.
Within an HTML page the <frameset> container is used instead of the <body> container, although NN allows a <frameset> to be the sole item within a <body> container.
A <frameset> ... </frameset> container can only directly contain <frame>, <frameset> and <noframe> tags.
A normal <body> container may (and should) be included within a <noframe> container. A browser that understands frames will ignore the <noframe> container and its contents, a browser that does not understand frames will ignore the <frameset>, <frame> and <noframe> tags and start processing the page at the first item found within the <noframe> container.
Frames usually, but this is not mandatory, have names defined via the name attribute of the <frame> tag. Frames are often used in conjunction with the (non-HTML3.2) target attribute of the <a> tag. When the user selects the link associated with an <a> tag, the value of the target attribute determines the frame in which the selected URL is actually displayed.
A common use of frames is to use one narrow frame on the left-hand side of the window to display links to a set of pages, when the user selects one of the links the selected page is displayed in another, larger, frame. Here's the index of the HTML encyclopaedia displayed this way. Note that this isn't an up-to-date index so don't bookmark it.
Here's the HTML for the body of the page linked to above
<frameset rows=20%,80%> <frame name=head src=framex11.html> <frameset cols=20%,80%> <frame name=index src=framex12.html> <frame name=main src=blank.html> </frameset> </frameset>
Note that there are two framesets in use, the first frameset splits the window into two parts horizontally, the smaller title part occupying 20% of the vertical space and the other occupying 80% which is occupied by a further frameset which is divided vertically.
If you are unfamiliar with frames you should look at the example and note the following points
<li><a href=marquee.html target=main>marquee</a>As you'll see from the HTML above main is the name of one of the frames.
The URL blank.html is an initially empty page. The initial src attribute may be safely omitted if IE is being used, however if NN is being used the effect is that the "main" frame becomes a separate desktop window. This is probably a bug.
Here are some variations on the basic frame based example linked to above.
Here's a variant with resizing disabled and scrolling disabled for the top frame. Notice the absence of scroll bars and the fact that you cannot select the inter-frame bars.
Here's a variant in which the index has been split into four separate pages with links between them. This is a rather attractive way to display this sort of material. However, in the absence of scrolling on the index frame, it is quite possible for the links to other parts of the index to be invisible and inaccessible to the user.
The final example uses the framespacing and frameborder attributes of the <frameset> tag to completely suppress the inter-frame boundaries, you may, or may not, think this is particularly effective. You may also think it would be even more effective if the "HTML Encyclopaedia" heading frame were omitted.
Browsers
MOS3 and ARA do not support frames at all. IE, NN and OP2
support frames, however OP2 will not completely suppress the frame
boundaries.