﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-樂於JAVA-文章分类-html</title><link>http://www.blogjava.net/HappyJava/category/28397.html</link><description>幸福人生(J2EE)</description><language>zh-cn</language><lastBuildDate>Thu, 27 Dec 2007 04:31:30 GMT</lastBuildDate><pubDate>Thu, 27 Dec 2007 04:31:30 GMT</pubDate><ttl>60</ttl><item><title>快速精通网页框架-FRAME</title><link>http://www.blogjava.net/HappyJava/articles/170711.html</link><dc:creator>李建軍</dc:creator><author>李建軍</author><pubDate>Wed, 26 Dec 2007 12:16:00 GMT</pubDate><guid>http://www.blogjava.net/HappyJava/articles/170711.html</guid><wfw:comment>http://www.blogjava.net/HappyJava/comments/170711.html</wfw:comment><comments>http://www.blogjava.net/HappyJava/articles/170711.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/HappyJava/comments/commentRss/170711.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/HappyJava/services/trackbacks/170711.html</trackback:ping><description><![CDATA[<p>FRAME（框架）是Web上经常会看到的页面结构。使用可视Web开发工具（比如Dreamweaver或者Frontpage），虽然可以在WYSIWYG环境中通过简单的鼠标托拽完成FRAME的构建，但是要实现真正细致甚至强大的功能，仔细理解FRAME的代码结构至关重要！你将发现，FRAME原来是这样的亲切易用。</p>
<p><strong>创建基本的FRAMESET</strong> </p>
<p>FRAMESET页面与普遍的Web页面有些不同。虽然仍旧以＜HTML＞和包含标题的＜HEAD＞标记以及其他脚本开始，但是其内容仅仅是表示的各个页面的版式设计。因此，不再需要有＜BODY＞元素，只需要＜FRAMESET＞标记。 </p>
<p>通过＜FRAMESET＞标记的＜rows＞和＜cols＞属性，浏览器窗口被分割为一个个格子。＜rows＞和＜cols＞的设置值可以是固定的像素值，可以是总空间的百分比值，还可以是用*以及一个数字相乘表示的分割剩余空间的比例值。比如说： </p>
<p>cols="80,20%,*"</p>
<p>分为3列，宽度分别为80像素，窗口宽度的20％，以及剩余宽度</p>
<p>rows="25%,75%"</p>
<p>分为2列，宽度分别为窗口宽度的25％和75％</p>
<p>rows="*,3*"</p>
<p>与上述第2个表示的一样，分为2列，但表示方法不同：第一列宽度为第二列的1/3</p>
<p><br />
在＜FRAMESET＞和＜/FRAMESET＞之间，用多个＜FRAME＞标记表示每个分割区。col表示从左到右的列，row表示从上到下的行。每个＜FRAME＞有一个src属性，给出了这个FRAME的内容。它可以是浏览器能显示的任何一个合法URL，或者是另外一个FRAMESET。为预防递归现象，一个FRAME不能包含它本身所在的FRAMESET页面。要用name属性定义FRAME的名字，这样就可以在代码或者脚本程序中引用它。 请看一段基本的FRAMESET代码： </p>
<p>＜HTML＞<br />
＜HEAD＞<br />
＜TITLE＞Simple FRAMESET＜/TITLE＞<br />
＜/HEAD＞<br />
＜FRAMESET cols="40%,60%" rows="2*,*"＞<br />
＜FRAME name="TopLeft" src="red.htm"＞<br />
＜FRAME name="TopRight" src="green.htm"＞<br />
＜FRAME name="BotLeft" src="blue.htm"＞<br />
＜FRAME name="BotRight" src="white.htm"＞<br />
＜/FRAMESET＞<br />
＜/HTML＞ </p>
<p><br />
＜FRAMESET rows="105,*"＞<br />
＜FRAME name="adbanner" src="ad.html"＞<br />
＜FRAMESET cols="40%,60%"＞<br />
＜FRAME name="left" src="red.htm"＞<br />
＜FRAMESET rows="*,*"＞<br />
＜FRAME name="top" src="blue.htm"＞<br />
＜FRAME name="bottom" src="white.htm"＞<br />
＜/FRAMESET＞<br />
＜/FRAMESET＞<br />
＜/FRAMESET＞ </p>
<p><strong>FRAME间的链接</strong> </p>
<p>一个FRAMESET结构的页面，新文档只转载进窗口的一部分中，而其他页面则保持静态不变。当用户点击FRAME中的链接时，新内容就在同一FRAME内打开。要让新内容在其他FRAME中打开，可以设置＜A＞标记的target属性值为那个FRAME的name值。 </p>
<p>而且，我们还可以设置打开目标为当前可见的任意一个FRAME，而不局限于本身的FRAMESET。目标可能是一个嵌套的FRAMESET中的FRAME，也可能是其他窗口中的FRAME。但是如果目标FRAME不存在，就会产生一个带有目标FRAME名字的新窗口。 </p>
<p>下面举个例子说明一下，假设有一个简单含2－FRAME的FRAMESET，文件名叫做home.html，代码如下： </p>
<p>&nbsp;</p>
<p>＜HTML＞<br />
＜HEAD＞＜TITLE＞FrommCo home page＜/TITLE＞＜/HEAD＞<br />
＜FRAMESET cols="115,*"＞<br />
＜FRAME src= "menu.htm"＞<br />
＜FRAME name= "content" src="main.htm"＞<br />
＜/FRAMESET＞<br />
＜/HTML＞ </p>
<p><br />
文件menu.htm在左边的FRAME中，其中有一系列链接，点击它们后新内容将在右边的叫做content的FRAME中打开。下面是menu.html的代码： </p>
<p>＜HTML＞＜HEAD＞＜/HEAD＞<br />
＜BODY＞＜P＞＜BR＞<br />
＜IMG src="Images/tmp_logo.gif" alt="FrommCo"＞＜P＞<br />
＜A href="main.htm" target="content"＞Main page＜/A＞＜P＞<br />
＜A href="mission.htm" target="content"＞Our mission＜/A＞＜P＞<br />
＜A href="staff.htm" target="content"＞Our staff＜/A＞＜P＞<br />
＜A href="splash.htm" target="_parent"＞FrommCo splash page＜/A＞<br />
＜/BODY＞＜/HTML＞ </p>
<p><br />
请注意最后一个链接中target的定义为_parent，这属于4个特殊的保留值。它们是： _parent：在当前FRAMESET位置显示新href。 </p>
<p>_top：在当前整个窗口位置显示新href，比如本身FRAMESET位于另一个FRAMESET中。 </p>
<p>_self：强制在当前FRAME中显示新href。 </p>
<p>_blank：在新窗口中显示href。</p>
<p>&nbsp;</p>
<p>表示客户端图形地图的＜AREA＞标记同样可以应用target属性，比如： </p>
<p>＜AREA shape=circle coords="75,75,50" href="main.htm" target="content" alt="Main page"＞ </p>
<p>还有一种经常的情况是：Web页面中的大部分或者全部链接都要求在一个特别的FRAME中打开。这时，可以在页面的＜HEAD＞代码区使用＜BASE＞标记设置默认的target，然后再分别定义特殊链接的target值。</p>
<p><br />
<strong>修饰FRAME</strong> </p>
<p>FRAMESET不仅在宽度、高度等方面具有可控制的数值，在美观方面也同样可以精确设置。 </p>
<p>默认情况下，FRAMESET的FRAME间有一个凸起的边沿，表示分割效果。如果不喜欢这个，想营造&#8220;无缝连接&#8221;的效果，可以在＜FRAME＞标记中设置FRAMEborder=0来消除它。在3.0及高版本的Navigator和Internet Explorer中，如果在＜FRAMESET＞标记中设置FRAMEborder=0，那么除了设置为FRAMEborder=1的FRAME外，所有其他FRAME的边沿都将消失。 </p>
<p>虽然设置了FRAMEborder=0，有些浏览器仍旧会在FRAME间保留一些边沿的颜色痕迹。这时，可以在＜FRAMESET＞标记中添加FRAMEspacing=0（对Internet Explorer）或者border=0（对Navigator和Opera）实现真正的无缝连接。 </p>
<p>请看下面的代码是如何使用这些属性的： </p>
<p>&nbsp;</p>
<p><br />
＜HTML＞<br />
＜HEAD＞＜TITLE＞FrommCo home page＜/TITLE＞＜/HEAD＞<br />
＜FRAMESET cols="115,*" FRAMEspacing=0 border=0＞<br />
＜FRAME src= "menu.htm" FRAMEborder=0 noresize scrolling=no＞<br />
＜FRAME name= "content" src="main.htm" FRAMEborder=0＞<br />
＜/FRAMESET＞<br />
＜/HTML＞ </p>
<p><br />
上面的代码中有2个新的属性：noresize表示锁住FRAME而不允许使用鼠标改变大小，scrolling=no表示屏蔽FRAME的滚动条，scrolling=yes表示允许，scrolling=auto表示根据显示内容需要自动显示滚动条。</p>
<p><strong>浮动FRAME</strong> </p>
<p>浮动FRAME是HTML4.0规范中的一个定义，目前的浏览器都支持它。 </p>
<p>不象FRAMESET表示的分割区样子，一个浮动FRAME作为一个内置对象存在于Web页面上，其样式就象一个页面上的一个图形或者一个applet。浮动FRAME使用＜IFRAME＞标记，它具有与＜FRAME＞相同的大多数属性设置，包括：name、src、marginwidth、marginheight、FRAMEborder以及scrolling。同时，它还具有与图形或者applet一样的height、width和align属性。 </p>
<p>而且，浮动FRAME遵循与普通FRAME一样的target原则：我们可以通过它的name来指向它。本原则适用于在任一类型FRAME中的浮动FRAME，反之易然。浮动FRAME中的没有traget的链接指向它本身，而_parent链接则指向包含＜IFRAME＞的文档所在的FRAME或者窗口。比如： </p>
<p>&nbsp;</p>
<p><br />
＜IFRAME name="floater" src="start.htm" width=150 height=200 hspace=10 align=left＞<br />
＜IMG src= "Images/noFRAME.gif" alt="You can't see the floating FRAME"<br />
width=150 height=200 hspace=10 align=right＞ <br />
＜/IFRAME＞＜BR＞<br />
＜A href="one.htm" target="floater"＞Show one.htm＜/A＞＜P＞<br />
＜A href="two.htm" target="floater"＞Show two.htm＜/A＞＜P＞<br />
＜A href="start.htm" target="floater"＞Bring back start.htm＜/A＞ </p>
<p><br />
注意，对应支持＜IFRAME＞标记的浏览器，任何位于＜IFRAME＞和＜/IFRAME＞间的内容都将忽略。反之，其中的内容将显示出来，这可以用作解释当前浏览器不支持＜IFRAME＞。 </p>
<p><br />
</p>
<div class="cnt" twffan="done">
<p><strong>何时使用FRAME</strong> </p>
<p>我们知道，FRAMESET的基本用途就是分割浏览器窗口，使得窗口的一部分内容改变，而其他部分保持不变。利用这个特性，就可以实现工具栏导航功能，一个FRAME内放置静态菜单页面，用户点击其中的项目后，在另外的FRAME内显示相关的内容。这样就可以从整体上减少文件大小，因为不必在每个内容页面中再包含菜单项目。 </p>
<p>FRAME有2个明显的不足： </p>
<p>FRAME从另外的级别上增加了站点的管理，原因在于超级链接不仅仅要指向适当的页面，而且也会装载到相关的FRAME内。 </p>
<p>另外，大多数浏览器在执行&#8220;添加书签&#8221;的操作时，只能记录下FRAMESET的初始位置。不管添加书签时是位于多么深的FRAMESET中，当再次选择这个书签时，就会返回到FRAMESET的初始页面。这就加大了访问者浏览指定内容的难度。 </p>
<p>&nbsp;</p>
<p>但是，如果好好地组织站点信息，使导航操作只有不深的几层，那么，使用FRAME就能很好地为访问者服务。记住：访问者都希望简洁的导航信息。 </p>
<p>当然，导航并非是使用FRAME的唯一原因，也可以使用FRAME创建交换工具和交换页面。而且，FRAME的多文档框架结构非常适于被javascript应用程序所操作。</p>
<p><strong>用FRAME设计站点</strong> </p>
<p>最常用的FRAME结构就是&#8220;菜单－内容&#8221;FRAMESET。一个FRAME内放置导航菜单，另一个FRAME内转载子菜单，每个子菜单的链接就指向本身。唯一的有target的链接都在菜单FRAME内。 请看下面的例程代码： </p>
<p>＜HTML＞＜HEAD＞<br />
＜TITLE＞Welcome to my site!＜/TITLE＞<br />
＜/HEAD＞<br />
＜FRAMESET cols="150,*"＞<br />
＜FRAME name= "menu" src="menu.htm"＞<br />
＜FRAME name= "content" src="intro.htm"＞<br />
＜/FRAMESET＞<br />
＜BODY＞<br />
＜!--如果是支持FRAME的浏览器，则不会显示下面的内容；否则，也显示出简单菜单页面--＞<br />
Welcome to my site.＜P＞<br />
＜A href="intro.htm"＞Introduction＜/A＞<br />
＜A href="products.htm"＞Products＜/A＞<br />
＜A href="reviews.htm"＞Reviews＜/A＞<br />
＜/BODY＞＜/HTML＞</p>
<p><strong>用脚本控制导航FRAME</strong> </p>
<p>上面介绍了FRAME的HTML代码结构，现在开始走向更深一步：使用脚本程序控制FRAME。 </p>
<p>每个Window对象有一个FRAMEs数组。对于普通的Web页面，这个数组是空的，其属性length为0。带有FRAMESET的页面，按照其上＜FRAME＞标记的前后顺序，生成一个FRAME数组。由于FRAMESET所在页面是每个FRAME的parent窗口，数组索引从0开始，所以从FRAMESET中引用第3个FRAME时就使用self.FRAMEs[2]，从其他FRAME文档中引用第3个FRAME时就使用parent.FRAMEs[2]。 </p>
<p>FRAME数组中的每一个成员都是一个窗口，它们具有普通窗口的一切方法、事件以及属性，并且包括它自己的FRAME数组（当它包含另外一个FRAMESET时）。因此，用脚本去修改一个FRAME的内容就象修改它的location.href一样简单。 </p>
<p>下面举例说明，假设一个FRAMESET包含3个同样的FRAME，都位于窗口下部： </p>
<p>&nbsp;</p>
<p>＜FRAMESET rows="60%,40%"＞<br />
＜FRAME name="link" src="link.htm"＞<br />
＜FRAMESET cols= "*,*,*"＞<br />
＜FRAME name= "blank1" src="blank.htm"＞<br />
＜FRAME name= "blank2" src="blank.htm"＞<br />
＜FRAME name= "blank3" src="blank.htm"＞<br />
＜/FRAMESET＞ <br />
＜/FRAMESET＞</p>
<p>&nbsp;</p>
<p>第一个FRAME中的文档叫做link.htm，使用点击其中的单一链接就可以修改其他三个FRAME中的内容。实现代码如下: </p>
<p>＜a href="javascript:navAll()"＞修改下面3个FRAME的内容＜/a＞<br />
＜SCRIPT language="javascript"＞＜!--<br />
function navAll() {<br />
parent.FRAMEs[1].location.href= "red.htm";<br />
parent.FRAMEs[2].location.href= "blue.htm";<br />
parent.FRAMEs[3].location.href= "white.htm"; }<br />
// --＞＜/SCRIPT＞</p>
<p><strong>用脚本控制动态FRAME</strong> </p>
<p>如果FRAME中变化的内容不多，就可以考虑使用脚本程序动态生成其内容。这样就不用再创建单独的小HTML页面，无需从服务器上下载。创建内容的方法与在任何窗口中书写内容一样，都是通过document对象。 </p>
<p>举个例子说明一下。假设要在一个FRAME内显示小组成员的相片，并在其下的一个小FRAME内显示该成员的名字等信息。首先建立信息数组： </p>
<p>empID = new Array();<br />
empID[0] = 'Dana Corolla, CEO';<br />
empID[1] = 'Arturo Montero, senior editor';<br />
empID[2] = 'Percy Tercel, head designer';<br />
empID[3] = 'Angus Coupedeville, astrologer';</p>
<p>&nbsp;</p>
<p>然后，建立小组成员照片的图形地图，将每个＜AREA＞链接到函数showMe(n)，由它负责根据索引数据创建信息： </p>
<p>part1 = '＜HTML＞＜HEAD＞＜/HEAD＞';<br />
part1+= '＜BODY bgcolor=#ffffff＞＜DIV align=center＞';<br />
part2 = '＜/DIV＞＜/BODY＞＜/HTML＞'; </p>
<p>function showMe(n) {<br />
parent.FRAMEs[1].document.open(); <br />
parent.FRAMEs[1].document.write(part1); <br />
parent.FRAMEs[1].document.write(empID[n]); <br />
parent.FRAMEs[1].document.writeln(part2); <br />
parent.FRAMEs[1].close(); <br />
} </p>
<p><strong>FRAME间的脚本控制</strong> </p>
<p>使用javascript，我们既可以从创建窗口的页面访问那个窗口，也可以从这个窗口创建的窗口访问它。另一方面，FRAMESET中的文档（包括FRAMESET本身）总是可以访问和操纵其中每个的javascript函数和变量。比如说，第三个FRAME中有函数sayGobble(vol)，那么在其他FRAME中就可以使用parent.FRAMEs[2].sayGobble(vol)来引用它。同样，FRAMESET页面中的变量myName可以被任何FRAME以parent.myName="Imelda"的命令进行设置。 </p>
<p>不管在其他FRAME中的内容如何，在静态FRAME或者FRAMESET中的函数和变量始终保持可用。这个特征非常有价值，不仅可以将通用函数保存在其中从而压缩代码，而且，还可以实现页面间转换时的状态保持。 </p>
<p>下面的FRAMESET页面只有一个FRAME叫做query.htm，并且定义了一个javascript变量myWord： </p>
<p>&nbsp;</p>
<p>＜HTML＞＜HEAD＞<br />
＜TITLE＞Passing data＜/TITLE＞<br />
＜SCRIPT LANGUAGE="javascript"＞＜!--<br />
myWord="";<br />
//--＞＜/SCRIPT＞<br />
＜/HEAD＞<br />
＜FRAMESET rows="*,1" FRAMEBORDER=no＞<br />
＜FRAME name= "active" src="query.htm"＞<br />
＜FRAME name= "dummy"＞<br />
＜/FRAMESET＞<br />
＜/HTML＞ </p>
<p>&nbsp;</p>
<p>页面query.htm有一个文本输入框以及一个到result.htm的链接，链接的onClick事件将设置FRAMESET页面的myWord变量为文本输入框的内容。代码如下： </p>
<p>＜HTML＞＜HEAD＞＜/HEAD＞<br />
＜BODY＞<br />
＜FORM name="myForm"＞<br />
＜INPUT type=text size=12 name="myText"＞<br />
＜P＞<br />
＜A onClick="parent.myWord=myText.value"<br />
href= "result.htm"＞See it in yellow on blue!＜/A＞<br />
＜/FORM＞<br />
＜/BODY＞＜/HTML＞</p>
<p>&nbsp;</p>
<p>页面result.htm取回并打印出myWord的数值，代码是： </p>
<p>＜HTML＞<br />
＜HEAD＞＜/HEAD＞<br />
＜BODY bgcolor=#0000cc vlink=#99ffff＞<br />
＜FONT size=+3 color=#ffff00＞<br />
＜SCRIPT language="javascript"＞＜!--<br />
document.write(parent.myWord);<br />
//--＞＜/SCRIPT＞<br />
＜/FONT＞＜P＞<br />
＜A href="query.htm"＞Do it again＜/a＞<br />
＜/BODY＞＜/HTML＞ </p>
<p>这个例子很有实用价值。比如说，你可以设定访问者按一定的次序打开页面，收集用户信息，最后定制出用户特制的显示内容。 </p>
<p>谈到状态维护功能，这个方法不会比使用cookie或CGI更好，因为当FRAMESET重载或者退出时，变量值就丢失了。但是，它不要求服务器端响应，也不存在安全问题，因此还是可以小试一把的。</p>
<p><strong>用脚本控制浮动FRAME</strong> </p>
<p>用脚本控制普通FRAME与浮动FRAME的方法基本相同，唯一的差别是浮动FRAME按＜IFRAME＞出现的顺序定义索引位置。如果FRAMEs.length不为0，就表示可以安全地处理浮动FRAME。比如说，在下面的代码中，如果存在叫做floater的浮动FRAME，链接就指向它；否则就指向"_top"： </p>
<p>&nbsp;</p>
<p>＜IFRAME name="floater" src="trog.htm" width=200 height=200＞＜/IFRAME＞ </p>
<p>＜A href="grot.html" target="floater" onClick="if (!self.FRAMEs.length)<br />
this.target='_top'"＞See grot.htm＜/A＞</p>
<p>&nbsp;</p>
<p>带有浮动FRAME的Web页面是FRAME文档的parent窗口，因此，多个浮动FRAME仍然可以通过parent.FRAME数组去访问每一个FRAME。</p>
<p><strong>预防脚本编程错误</strong> </p>
<p>尽管FRAME是HTML的一个稳定规范说明，但DOM模型只把它们当做HTML元素而不是窗口，因此围绕FRAME的脚本编程并不是能很周全地定义。这个不足导致了当装载FRAME时会发生一些脚本执行方面的冲突。 </p>
<p>立即修改FRAME内容的脚本经常会产生错误。原因在于：浏览器通常是先执行脚本命令，然后在按照src所示装入页面内容。 </p>
<p>解决方法很直接，就是判断FRAME内容是否装载完毕。有一个好的处理技巧是以HTML页面开始所有的FRAME，由它象主FRAMESET报告装载请看。比如说，有一个FRAMESET页面，要等装载完所有的FRAME后才能执行函数goToIt()，那么就将下面的javascript程序段放进FRAMESET文档中： </p>
<p>countDown=FRAMEs.length;<br />
function soundOff() {<br />
countDown--; <br />
if (countDown==0) { <br />
goToIt(); <br />
} <br />
} </p>
<p>&nbsp;</p>
<p>然后，在每个FRAME页面的＜BODY＞标记中设置上onLoad="parent.soundOff()"。当FRAME页面装载并执行soundOFF()后，等到countDown 为0时，就表示FRAME完全装载完毕。</p>
<p><strong>总结</strong></p>
<p>FRAME是双刃剑，使用不好会造成混乱的站点结构和外观，使用得当将大大方便用户的操作方式以及形成清晰的页面风格。相信你看完本文后，会对FRAME有了更亲切的认识。 </p>
</div>
<img src ="http://www.blogjava.net/HappyJava/aggbug/170711.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/HappyJava/" target="_blank">李建軍</a> 2007-12-26 20:16 <a href="http://www.blogjava.net/HappyJava/articles/170711.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>详细讲解网页框架frameset的使用心得</title><link>http://www.blogjava.net/HappyJava/articles/169509.html</link><dc:creator>李建軍</dc:creator><author>李建軍</author><pubDate>Sat, 22 Dec 2007 01:57:00 GMT</pubDate><guid>http://www.blogjava.net/HappyJava/articles/169509.html</guid><wfw:comment>http://www.blogjava.net/HappyJava/comments/169509.html</wfw:comment><comments>http://www.blogjava.net/HappyJava/articles/169509.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/HappyJava/comments/commentRss/169509.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/HappyJava/services/trackbacks/169509.html</trackback:ping><description><![CDATA[最近在搞网页编程，总结了frameset 的一些使用技巧，供大家参考哦，还是先剖析一下框架吧！<br />
<br />
<strong>■ 框架标记</strong><br />
<br />
　　&lt;FRAMESET&gt; &lt;FRAME&gt; <br />
　　&lt;NOFRAMES&gt; <br />
　　&lt;IFRAME&gt; <br />
<br />
　　欲明白本篇【Html彻底剖析】之标记分类，请看 【标记一览】。 <br />
　　也请先明白围堵标记与空标记的分别，请看 【HTML概念】。 <br />
<br />
<strong>■ 框架概念 ：</strong><br />
<br />
　　谓框架便是网页画面分成几个框窗，同时取得多个 URL。只需要 &lt;FRAMESET&gt; &lt;FRAME&gt; 即可，面所有框架标记需要放在一个总起的 html 档，这个档案只记录了该框架如何分割 ，不会显示任何资料，所以不必放入 &lt;BODY&gt; 标记，浏览这框架必须读取这档案 面不是其他框窗的档案。&lt;FRAMESET&gt; 是用来划分框窗，每一窗框由一个 &lt;FRAME&gt; 标 记所标示，&lt;FRAME&gt;必须在 &lt;FRAMESET&gt; 范围中使用。如下例：<br />
<div class="code">　　&lt;frameset cols="50%,*"&gt; &lt;frame name="hello" src="up2u.html"&gt; &lt;frame name="hi" src="me2.html"&gt; <br />
　　&lt;/frameset&gt; </div>
<br />
　　此例中 &lt;FRAMESET&gt; 把画面分成左右两相等部分，左便是显示 up2u.html，右边则会显示 me2.html 这档案，&lt;FRAME&gt; 标记所标示的框窗永远是按由上而下、由左至右的次序 <br />
<br />
&lt;FRAME&gt;<br />
用法：　　　　　　定义一个帧<br />
开始／结束标识：　必须／非法<br />
属性：　　　　　　name="..."定义帧的名字<br />
　　　　　　　　　scr="..."定义在帧中显示的内容的来源<br />
　　　　　　　　　frameborder="..."定义帧之间的边界(0或1)<br />
　　　　　　　　　margwidth="..."设置帧的边界和其中内容之间的间距<br />
　　　　　　　　　margheight="..."设置帧的边界和其中内容之间的间距化<br />
　　　　　　　　　noresize="..."使帧的尺寸不能变<br />
　　　　　　　　　scrolling="..."设置滚动条的表示方式(auto, yes, no)<br />
空：　　　　　　　不允许<br />
<br />
&lt;FRAMESET&gt;...&lt;/FRAMESET&gt;<br />
用法：　　　　　　定义在一个窗口中帧的布局<br />
开始／结束标识：　必须／必须<br />
属性：　　　　　　rows="..."设定行的数目<br />
　　　　　　　　　cols="..."设定列的数目<br />
　　　　　　　　　onload="..."当载入文档时的内部事件触发器<br />
　　　　　　　　　onunload="..."当卸载文档时的内部事件触发器<br />
空：　　　　　　　不允许<br />
注释：　　　　　　FRAMESET可以嵌套<br />
<br />
以上所述只是最简单的框架设定，若希望达到更合适的效果请加入或修改以下各参数。 <br />
<br />
　　<strong>标记：&lt;FRAMESET&gt; </strong><br />
　　例子：&lt;frameset rows="90,*" frameborder="0" border=0 framespacing="2" border="2" bordercolor="#008000"&gt;&lt;/frameset&gt; <br />
　　功用：宣告HTML文件为框架模式，并设定视窗如何分割。 <br />
<br />
　　参数： <br />
COLS="90,*" <br />
垂直切割画面(如分左右两个画面)，接受整数值、百分数， * 则代表占用剩余的空间。数值的个数代表分成的视窗数目且以逗号分隔。例如 COLS="30,*,50%" 可以切成三个视窗，第一个视窗是 30 pixels 的宽度，为一绝对分割，第二个视窗是当分配完第一及第三个视窗后剩下的空间，第三个视窗则占整个视窗画面的 50% 宽度为一相对分割。你可自己调整数字。 <br />
<br />
ROWS="120,*" <br />
这是横向切割，将画面上下分开，数值设定同上。 COLS 与 ROWS 两参数尽量不要放在同一个 &lt;FRAMESET&gt; 标记中，因 Netacape 偶然不能显示这类型的框架，尽量采用多重分割，如以上各例。<br />
frameborder="0" <br />
设定框架的边框，其值只有 0 和 1 ， 0 表示不要边框， 1 表示要显示边框。 <br />
<br />
border="0" <br />
设定框架的边框厚度，以 pixels 为单位。 <br />
<br />
bordercolor="#008000" <br />
设定框架的边框颜色。颜色值请参考【调色原理】。 <br />
<br />
framespacing="5" <br />
表示框架与框架间保留的空白的距离。 <br />
<br />
　　<strong>标记：&lt;FRAME&gt;</strong> <br />
　　例子：&lt;frame name="top" src="a.html" marginwidth="5" marginheight="5" scrolling="Auto" frameborder="0" noresize framespacing="6" bordercolor="#0000FF"&gt; <br />
　　功能：设定每一个框窗内的参数属性。 <br />
　　参数： <br />
<br />
SRC="a.html"<br />
设定此框窗中要显示的网页档案名称，每个框窗一定要对应一个网页档案。 <br />
<br />
NAME="top"<br />
设定这个框窗的名称，这样才能指定框架来作链接，必须但任意命名。 <br />
<br />
<br />
frameborder=0<br />
设定框架的边框，其值只有 0 和 1 ， 0 表示不要边框， 1 表示要边框。 <br />
<br />
framespacing="6"<br />
表示框架与框架间的保留的空白的距离。 <br />
<br />
bordercolor="#008000"<br />
设定框架的边框颜色。 <br />
<br />
scrolling="Auto"<br />
设定是否要显示卷轴，YES 表示要显示卷轴，NO 表示无论如何都不要显示卷轴，AUTO 视情况而定。 <br />
<br />
noresize<br />
设定不让使用者可以改变这个框框的大小，如没有设定此参数，使用者可随意地拉动框架改变其大小。 <br />
<br />
marginhight=5<br />
表示框架高度部分边缘所保留的空间。 <br />
<br />
marginwidth=5<br />
表示框架宽度部分边缘所保留的空间。
 <img src ="http://www.blogjava.net/HappyJava/aggbug/169509.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/HappyJava/" target="_blank">李建軍</a> 2007-12-22 09:57 <a href="http://www.blogjava.net/HappyJava/articles/169509.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>