<frameset> 标签有一个必需的属性:要么是 rows,要么是 cols,这取决于您的选择,它们定义了文档窗口中框架或嵌套的框架集的行或列的大小及数目。
这两个属性都接受用引号括起来并用逗号分开的值列表,这些数值指定了框架的绝对(像素点)或相对(百分比或其余空间)宽度(对列而言),或者绝对或相对高度(对行而言)。这些属性值的数目决定了浏览器将会在文档窗口中显示多少行或列的框架。
与表格一样,浏览器在显示时会尽可能接近给定的框架集尺寸。但是,浏览器不会为了能够容纳下超出边沿的框架集而扩展文档窗口的边界,也不会在指定的框架没有填满整个窗口时用空白区域来填满窗口。相反,浏览器会根据一个框架在行和列中相对于其他框架的大小来分配空间,这样就能够填满整个文档窗口了。(注意到一个主框架文档中没有滚动条了吗?)
下面的代码将创建 3 行框架:
<frameset rows="150,300,150">
其中的每行都贯穿整个文档窗口。第一和最后一个框架被设为 150 像素高,第二行设置成 300 像素高。
实际上,除非浏览器窗口正好是 600 像素高,否则浏览器将会自动按照比例延伸或压缩第一和最后一个框架,使得这两个框架都占据 1/4 的窗口空间。中间行将会占据剩下 1/2 的窗口空间。
用窗口尺寸的百分比表示的框架行和列尺寸数据更加实际。
例如,下面这个示例与刚才那个示例的效果相同:
<frameset rows="25%,50%,25%">
当然,如果这些百分比加起来不是 100%,浏览器也会自动按照比例重新给出每行尺寸以消除差异。
如果你像我们一样,那么将问题综合起来就不是一件难事。可能有的框架设计人员正为同样的困难而感到苦恼,这就解释了为什么他们要在 <frameset> 的 rows 和 cols 值上加上星号。它告诉浏览器要在将相邻的框架放入框架集之后,给剩下的空间分配各自的行或列。
例如,当浏览器遇到下列框架标签时:
<frameset cols="100, *">
上面的例子会生成一个宽为固定的 100 像素的列,然后再生成另一个框架列,该列会占据框架集中其余所有的空间。
您还可以对多个列或行属性值使用星号。在这样的情况下,相应的行或列将对可用空间进行等分,例如:
<frameset rows="*, 100, *">
这条语句在框架集的中间生成一个 100 像素高的行,并在这行的上边和下边各生成一个相同尺寸的行。
如果在星号前放置一个整数值,相应的行或列就会相对地获得更多的可用空间。例如:
<frameset cols="10%, 3*, *, *">
它生成了 4 列:第一列占据整个框架集宽度的 10%。然后浏览器把其他空间的 3/5 分配给第二个框架,第三个和第四个框架各分配其余空间的 1/5。
从上面的例子可以发现,使用星号(尤其是用数值作为前缀),可以很容易地在一个框架集中分割剩下的空间。
提示:需要注意的是,浏览器允许用户手动地为单个框架文档的行或列重新确定大小,并因此改变每个框架在框架显示中各自占据的相对比例,除非你显式地告诉浏览器不要这样做。为了防止这种情况,可以在 <frame> 标签中使用 noresize 属性。