HTML系列教程:17_HTML 框架(frameset、frame、iframe)零基础详解

⚠重要提醒: <frameset>、<frame> HTML5 已经废弃,不再推荐使用 ,仅做历史了解; 现在唯一还在使用的框架标签是 <iframe> 内联框架。

HTML 框架作用:把浏览器窗口切分成多个独立页面区域,每个区域加载一个单独的 html 文件。 简单理解:一个浏览器窗口,同时嵌入好几个网页。

分为两类:

  1. 老式框架:frameset + frame(HTML5 废弃,不要写新项目)
  2. 内联框架:iframe(现在还在用,把另一个网页嵌入当前页面里面)

一、老式框架 frameset + frame(了解即可,禁止实际开发使用)

HTML4 时代使用,HTML5 已经完全删除。 ❗注意:使用<frameset>的时候,不能有 body 标签!frameset 直接替代 body。

1、frameset 属性

  • rows:按行 切割窗口,上下分割。格式:高度1,高度2,...
  • cols:按列 切割窗口,左右分割。格式:宽度1,宽度2,... 数值可以写像素 px,也可以写百分比%,*代表剩余全部空间。

frame 属性

  • src:要加载的 html 文件地址
  • name:框架名字,可以给 a 标签 target 用来指定在哪个框架打开链接
  • noresize:禁止拖动分割条改变大小
  • scrolling="no":取消滚动条

示例 1:上下分割 rows

把页面分成上下两部分:上面 100 像素,剩下全部给下面

html 复制代码
<!-- 注意:这里没有<body>标签!! -->
<frameset rows="100,*">
    <frame src="top.html" name="topFrame" noresize>
    <frame src="main.html" name="mainFrame">
</frameset>

效果:浏览器窗口切成上下两块,上块显示 top.html,下块显示 main.html。

示例 2:左右分割 cols

左边 200px,右边占剩下全部宽度

html 复制代码
<frameset cols="200,*">
    <frame src="left.html" name="left">
    <frame src="right.html" name="right">
</frameset>

示例 3:框架嵌套(经典后台布局:上,左,右)

顶部一行,下面再左右分栏

html 复制代码
<!-- 先切上下,高度100,剩下* -->
<frameset rows="100,*">
    <frame src="top.html">
    <!-- 下面部分继续左右切分 -->
    <frameset cols="220,*">
        <frame src="menu.html">
        <frame src="content.html">
    </frameset>
</frameset>

target 跳转到指定框架

left 页面里面的 a 链接,点击在 main 框架打开页面:

html 复制代码
<a href="news.html" target="mainFrame">打开新闻</a>

target="框架name值",链接在指定框架窗口加载。

frameset 为什么被 HTML5 废弃(缺点)

  1. 不能放 body,页面结构怪异;
  2. 不利于搜索引擎抓取;
  3. 打印、移动端兼容性很差;
  4. 用户体验不好,后退按钮混乱。

✅结论:写作业可以了解,实际项目绝对不要用 frameset/frame。


二、iframe 内联框架(现在唯一在用的框架标签,重点学习)

<iframe>:在当前 HTML 页面里面,挖一块区域,嵌入另外一个网页。 不需要去掉 body,直接写在 body 里面。

基础语法

html 复制代码
<iframe src="目标网页地址" width="宽度" height="高度"></iframe>

常用属性

属性 说明
src 嵌入网页的 url 地址,可以是本地 html,也可以是外部网址
width iframe 盒子宽度,可以 px 或者百分比
height iframe 盒子高度
frameborder="0" 去掉 iframe 默认边框(常用)
scrolling="no" 是否显示滚动条;no = 不显示,yes 显示,auto 自动
name iframe 名字,a 标签 target 可以在此窗口打开页面

示例 1:嵌入本地另一个 html 页面

假设同一个文件夹有 news.html,把它嵌入当前页面一块区域

html 复制代码
<!DOCTYPE html>
<html lang="zh‑CN">
<head>
    <meta charset="UTF‑8">
    <title>iframe演示</title>
</head>
<body>
    <h2>当前主页面</h2>
    <p>下面嵌入另外一个网页:</p>
    <!-- 嵌入news.html,宽600,高350,去掉边框 -->
    <iframe src="news.html" width="600" height="350" frameborder="0"></iframe>
</body>
</html>

示例 2:a 链接 target 指向 iframe,点击链接在 iframe 里面打开页面

给 iframe 设置 name,a 标签 target 等于这个 name。

html 复制代码
<body>
    <p>点击下面链接,内容会在下方框内打开</p>
    <a href="page1.html" target="myIframe">打开页面1</a>
    <a href="page2.html" target="myIframe">打开页面2</a>

    <!-- iframe命名为 myIframe -->
    <iframe name="myIframe" width="700" height="400" frameborder="0"></iframe>
</body>

效果:点击超链接,不新开浏览器标签页,在这个小方框内加载新网页。

示例 3:嵌入外部网站(注意很多网站禁止被 iframe 嵌套,会报错)

html 复制代码
<iframe src="https://www.bilibili.com" width="800" height="500" frameborder="0" scrolling="auto"></iframe>

⚠很多大型网站设置防盗链,拒绝被别人 iframe 嵌入,页面会空白或者报错,属于正常现象。

iframe 实际开发常见用途

  1. 嵌入视频播放器(视频网站的分享代码就是 iframe)
  2. 嵌入地图
  3. 后台管理系统局部页面刷新
  4. 嵌入第三方组件、表单

iframe 的缺点

  1. 搜索引擎不容易抓取 iframe 里面的内容;
  2. 页面加载变多,性能有损耗;
  3. 跨域限制:JS 很难操作 iframe 内外页面。

frameset 和 iframe 对比

标签 是否 HTML5 支持 原理 使用场景
frameset+frame ❌废弃 分割整个浏览器窗口,替代 body 老项目历史代码,新项目禁用
iframe ✅支持 在当前页面中嵌入一块子网页 嵌入视频、地图、第三方页面

新手高频坑

  1. 使用 frameset 写代码还写了<body>,页面直接乱掉。

frameset 不能和 body 共存,HTML5 直接不要学这个,了解即可。

  1. iframe 没有写frameborder="0",四周有难看默认黑色边框。

  2. 想嵌入外部网站,页面空白。

对方网站设置 X‑Frame‑Options,禁止被 iframe 嵌套,这是网站安全设置,无法解决,换别的地址测试。

  1. target 名字写错,链接没有在 iframe 打开,而是新开窗口。

target 的值必须和 iframe 的name属性完全一模一样,区分大小写。

完整可直接复制运行的 iframe 示例

html 复制代码
<!DOCTYPE html>
<html lang="zh‑CN">
<head>
    <meta charset="UTF‑8">
    <title>iframe完整例子</title>
    <style>
        iframe{
            border:1px solid #ccc;
        }
    </style>
</head>
<body>
    <h1>主页面标题</h1>
    <p>下面方框是嵌入的子页面区域</p>

    <div>
        <a href="https://example.com" target="box">加载示例页面</a>
    </div>
    <br>

    <iframe
        name="box"
        src="https://example.com"
        width="750"
        height="420"
        frameborder="0"
    >
        您的浏览器不支持iframe
    </iframe>

</body>
</html>

iframe 标签中间写文字,浏览器不支持 iframe 的时候会显示这段提示。

本篇知识点总结

  1. <frameset> + <frame> HTML5 已废弃,把整个浏览器分割多个页面,仅作历史了解,新项目不要写。
  2. <iframe>内联框架仍然可用,在当前页面里面嵌入一小块子网页。
  3. iframe 核心属性:src地址、width/height尺寸、frameborder="0"去除边框,name配合 a 标签target在框内跳转页面。
  4. 用途:嵌入视频、地图、第三方页面;缺点:不利于 SEO,存在跨域限制。
相关推荐
仿生狮子2 小时前
OpenAI 攻下千禧年难题之后,开发者似乎无动于衷
前端·数学·vibecoding
Lvan的前端笔记5 小时前
docker:每个前端项目一个 Nginx 容器还是只有一个Nginx容器
前端·nginx·docker
三天不学习5 小时前
Egg.js 4 突然爆火,原因是否归结于AI 原生落地需求爆发?
前端·javascript·全栈·egg.js
xcs194056 小时前
前端 vue 的前端页面debugger 进不去
前端·javascript·vue.js
明月_清风7 小时前
Deno 终局来了:从挑战 Node 到被 Cloudflare 收编
前端·后端·node.js
Csvn8 小时前
框架性能优化
前端
回眸&啤酒鸭10 小时前
【回眸】OpenSwarm 多智能体协作系统实战指南
大数据·前端·人工智能
用户693717500138410 小时前
2026,程序员的时代拐点到了
android·前端·后端
大龄秃头程序员10 小时前
一次 iBeacon + BLE 无感解锁方案的实现记录
前端
小兔子10 小时前
Python 的 GIL 与 free-threading:3.13 之后「去 GIL」走到哪一步了
前端