As with tables, the browser will match the size you give a frameset
as closely as possible. The browser will not, however, extend the
boundaries of the main document window to accommodate framesets that
would otherwise exceed those boundaries or fill the window with empty
space if the specified frames don't fill the window. Rather,
the browsers allocate space to a particular frame relative to all
other frames in the row and column and resolutely fills the entire
document window. (Did you notice that a frame document window does
not have scrollbars?)
For example:
<frameset rows="150,300,150">
creates three rows of frames, each extending across the entire
document window. The first and last frames are set to 150 pixels
tall, the second to 300 pixels. In reality, unless the browser window
is exactly 600 pixels tall, the browser automatically and
proportionately stretches or compresses the first and last frames so
that each occupies one quarter of the window space. The center row
occupies the remaining half of the window space.
<frameset rows="25%,50%,25%">
Of course, if the percentages don't add up to 100 percent, the
browser automatically and proportionally resizes each row to make up
the difference.
If you are like us, making things add up is not a strength. Perhaps
some of the frame designers suffer the same difficulty, which would
explain why they included the very nifty asterisk option for
<frameset> rows and
cols values. It tells the browser to size the
respective column or row to whatever space is left over after putting
adjacent frames into the frameset.
For example, when the browser encounters the following frame tag:
<frameset cols="100,*">
it makes a fixed-sized column 100 pixels wide, and then creates
another frame column that occupies all of the remaining space in the
frameset.
Here's a fancier layout example:
<frameset cols="10,*,10">
This one creates two very thin columns down the edges of the frameset
and gives the remaining center portion to the middle column.
You may also use the asterisk for more than one row- or
column-attribute value. In that case, the corresponding rows or
columns equally divide the available space. For example:
<frameset rows="*,100,*">
creates a 100-pixel tall row in the middle of the frameset and
equal-sized rows above and below it.
If you precede the asterisk with an integer value, the corresponding
row or column gets proportionally more of the available space. For
example:
<frameset cols="10%,3*,*,*">
creates four columns: the first column occupies 10 percent of the
overall width of the frameset. The browser then gives the second
frame 3/5 of the remaining space, and the
third and the fourth are each given 1/5 of
the remaining space.
Using asterisks (especially with the numeric prefix) makes it easy to
divide up the remaining space in a frameset.