Appendix: Improper Row and Column Lists |
An improper row list is a row list that specifies an unsatisfyable set of row dimensions. For example, consider the row list given in the following frameset tag:
<frameset rows="15,25,100">
This row list tells the browser to divide the document area into rows of heights 15, 25, and 100 pixels -- which is perfectly fine if the document area being divided is exactly 140 pixels high. But how often can you predict exactly how tall the user's browser window is going to be? After all, most browser programs are displayed in resizable windows. What if the area being divided by the frameset is shorter or taller than 140 pixels? Clearly, this row list presents some layout problems that must be solved.
Here is another example of an improper list:
In this example, three column frames will cover 30%, 40%, and 50% of the document area. But how can this be? Since the sum of these percentages is greater than 100%, what's the browser to do?
Although improper row or column lists can be confusing to programmers, frames-capable browsers can handle them quite easily through a technique called normalization. This means that whenever the sum of the row or column sizes does match the size of the area being divided, every frame is proportionately scaled until they all fit.
Suppose, for example, that you want to use percentages to divide a document area into three row frames of equal size. One third is approximately equal to 33% -- but not exactly. Since it is actually impossible to represent the quantity 1/3 this way, you might settle for
Because the sum of the areas does not equal 100% exactly, the browser will automatically distribute the extra 1% evenly among all three rows. Hence, even though your numbers weren't exact, the browser's size normalization capability helps you achieve the desired effect!
Note: In this example example, percentages are used in the frameset only to motivate a discussion. A wise frame designer would actually prefer "<frameset rows=*,*,*>
" instead.
To avoid creating improper row or column lists, remember the following rules:
For more information on forming row and column lists, see The Tags: <frameset ...> </frameset>