34

我是 HTML5 的新手,我做了一些研究,发现它的使用<frameset>已经过时,而我读到<iframes>的却不是。那么有人可以帮助我吗,我想获得与所示示例相同的结果,但是在使用HTLM5 中未弃用的<iframes>其他替代品时?<frameset>

<frameset cols="20%,*,">
    <frame src="menu.html">
    <frame src="events.html">
</frameset> 
4

3 回答 3

34

框架已被弃用,因为它们给 url 导航和超链接带来了麻烦,因为 url 只会将索引页面(带有框架集)带给您,并且无法指定每个框架窗口中的内容。如今,网页通常由 PHP、ASP.NET、Ruby 等服务器端技术生成。因此,可以通过将模板与以下内容合并来简单地生成页面,而不是使用框架:

模板文件

<html>
<head>
<title>{insert script variable for title}</title>
</head>

<body>
  <div class="menu">
   {menu items inserted here by server-side scripting}
  </div>
  <div class="main-content">
   {main content inserted here by server-side scripting}
  </div>
</body>
</html>

如果您不完全支持服务器端脚本语言,您也可以使用服务器端包含 ( SSI )。这将允许您做同样的事情——即从多个源文档生成单个网页。

但是,如果您真的只想让网页的一部分成为一个单独的“窗口”,您可以在其中加载不一定位于您自己的服务器上的其他网页,您将不得不使用iframe

您可以像这样模拟您的示例:

框架示例

<html>
<head>
  <title>Frames Test</title>
  <style>
   .menu {
      float:left;
      width:20%;
      height:80%;
    }
    .mainContent {
      float:left;
      width:75%;
      height:80%;
    }
  </style>
</head>
<body>
  <iframe class="menu" src="menu.html"></iframe>
  <iframe class="mainContent" src="events.html"></iframe>
</body>
</html>

可能有更好的方法来实现布局。我使用了 CSS float属性,但您也可以使用表格或其他方法。

于 2013-08-15T18:43:12.423 回答
7

HTML 5 确实支持 iframe。添加了一些有趣的属性,例如“sandbox”和“srcdoc”。

http://www.w3schools.com/html5/tag_iframe.asp

或者你可以使用

<object data="framed.html" type="text/html"><p>This is the fallback code!</p></object>
于 2013-08-15T18:38:58.703 回答
7

虽然我同意其他人的观点,但如果您仍然坚持使用框架,您可以在 XHTML 中执行 index.html,然后在 HTML5 中执行框架的内容。

于 2014-05-10T22:16:43.760 回答