Skip to content

HTML Iframes

<iframe> (Inline Frame,内联框架) 用于在当前 HTML 文档中嵌入另一个 HTML 文档。可以将其视为一个查看独立网页的窗口。

示例:显示一个简单的 iframe:

<iframe src="demo_page.html" title="Demonstration Iframe"></iframe>

(注意:要实际渲染嵌入的页面,需要存在 demo_page.html 文件。)

基本语法使用带有 src 属性的 <iframe> 标签:

<iframe src="URL" title="Description of iframe content">
<!-- 备用内容,用于不支持 iframe 的浏览器 -->
您的浏览器不支持 iframes。
</iframe>
  • src 属性指定要嵌入页面的 URL。
  • title 属性对可访问性很重要。它应该为屏幕阅读器用户描述 iframe 的内容。
  • 开放标签 <iframe> 和闭合标签 </iframe> 之间的内容仅在浏览器不支持 iframes 时显示。

你可以直接使用 height 和 width 属性指定 iframe 的大小,或者更好地使用 CSS。

使用 HTML 属性(值以像素为单位):

<iframe src="demo_page.html" width="500" height="300" title="Sized Iframe"></iframe>

使用 CSS(更灵活):

<iframe src="demo_page.html" style="width: 80%; height: 400px;" title="CSS Sized Iframe"></iframe>
/* 或者使用外部/内部样式表 */
iframe.my-iframe-style {
width: 100%; /* 使其响应式 */
max-width: 600px; /* 可选的最大宽度 */
height: 450px;
border: none; /* 移除默认边框 */
}

使用 CSS 允许使用更灵活的单位,如百分比(%)或视口单位(vw、vh),并使样式与页面的其余部分保持一致。

默认情况下,浏览器通常会在 iframe 周围渲染边框。

要移除边框,使用 CSS border 属性并将其设置为 none:

<iframe src="demo_page.html" style="border:none;" title="No Border Iframe"></iframe>

你也可以使用 CSS 为边框添加样式:

<iframe src="demo_page.html" style="border: 2px dashed blue;" title="Styled Border Iframe"></iframe>

iframe 可以用作超链接的目标框架。这意味着点击链接可以在 iframe 内部加载页面,而不是导航主窗口。

要实现这一点,给 <iframe> 添加 name 属性,并在链接的 target 属性中使用该名称:

<iframe src="default_content.html" name="myTargetFrame" title="Content Area"></iframe>
<p>
<a href="page1.html" target="myTargetFrame">Load Page 1</a>
</p>
<p>
<a href="page2.html" target="myTargetFrame">Load Page 2</a>
</p>

虽然这种方法可行,但在现代 Web 设计中已不那么常见,通常被主页面内通过 JavaScript 驱动的内容加载所取代。

  • 同源策略 (Same-Origin Policy):iframe 中的脚本通常只能在与父页面同源(协议、域名和端口相同)时才能与之交互。
  • 安全风险 (点击劫持 Clickjacking):恶意网站可能会将你的页面嵌入到一个不可见的 iframe 中,诱骗用户点击。使用服务器端的 X-Frame-Options HTTP 头或内容安全策略(Content Security Policy, frame-ancestors)来控制嵌入。
  • sandbox 属性:你可以使用 sandbox 属性限制 iframe 内内容的权限(例如,<iframe sandbox="allow-scripts allow-same-origin" src="...">)。这在嵌入不受信任的内容时增强了安全性。请查阅 MDN 文档了解 sandbox 选项。
  • 性能 (Performance):每个 iframe 都会加载一个完整的 HTML 文档,这可能会影响父页面的性能。
  • 可访问性 (Accessibility):确保 title 属性提供清晰的描述。
  • 响应性 (Responsiveness):iframe 的完全响应式布局可能比较棘手。常用技术包括使用 CSS 包装器和长宽比填充 (aspect ratio padding)。
标签描述
定义一个内联框架以嵌入另一个 HTML 文档。