These days, most Web developers are discouraged from using frames (with good reason). However, users still like the functionality they provide. FRAME and IFRAME are handy scrolling containers, but you may not know that scrolling DIVs can accomplish most of the same thingswithout the headaches of frames.
Frames are most commonly used to keep some elements stationary while scrolling others. For example, an ASP page might produce a large table that would make the user scroll far past the navigation bars. The table could be placed in a scrolling DIV, where it will scroll just like it was in an IFRAME!
<div style="HEIGHT:100px; WIDTH:50%; OVERFLOW:auto">
<table border=1 width=100%>
<!-- many more table rows -->
The CSS-2 attribute OVERFLOW:auto scrolls the element when needed; scrollbars are hidden when they are not needed. OVERFLOW:scroll forces scrollbars to appear. The OVERFLOW attribute is described here: http://www.w3.org/TR/REC-CSS2/visufx.html#overflow-clipping.
The HEIGHT attribute must then be set so the DIV will run out of space and begin to scroll.
Scrolling DIVs can be used instead of framesets to keep navigation bars stationary while content scrolls:
<table width=100% height=100% border=1>
<tr><td colspan=2 height=20% valign=top>
I'm the banner and global navigation.</td></tr>
<tr><td width=20% valign=top>
I'm the left nav bar.</td>
<td width=90% valign=top>
<div id=divContent style="HEIGHT: 100%; OVERFLOW: auto">
<P>I'm the content. I scroll if I need to.</P>
I frequently use a scrolling DIV surrounded by a table cell instead of a read-only TEXTAREA:
<table border=1 cellspacing=0 cellpadding=0 width=50%>
<div style="HEIGHT: 70px; WIDTH: 100%; OVERFLOW: auto">
<INPUT id=checkbox1 name=checkbox1 type=checkbox>Choose Me<BR>
<!-- more checkboxes -->
<INPUT id=checkboxN name=checkboxN type=checkbox>Choose Me<BR>
Of course, almost anything can go inside a DIV, like these checkboxes.
:OVERFLOW is supported by IE4+, but not by Navigator.