0

0

HTML中的框架集怎么使用? frameset标签应用实例

星降

星降

发布时间:2025-08-02 15:03:01

|

239人浏览过

|

来源于php中文网

原创

现代网页开发不再使用html框架集(frameset)是因为它存在用户体验差、seo不友好、无障碍性弱、安全性低和维护困难等问题,1. 用户体验方面,多个滚动条和书签无法定位具体框架内容导致操作混乱;2. 搜索引擎难以索引分散在不同frame中的内容,影响网站排名;3. 屏幕阅读器对frameset结构支持差,不利于残障用户访问;4. 存在点击劫持等安全风险;5. 需要管理多个html文件,增加开发和调试复杂度。取而代之的现代替代方案是使用css的flexbox或grid布局来实现页面区域划分,既能灵活控制布局又利于seo和可访问性;对于嵌入外部内容的需求,可使用

HTML中的框架集怎么使用? frameset标签应用实例

HTML中的框架集,也就是那个

frameset
标签,它过去是用来把一个浏览器窗口切分成好几个独立区域的,每个区域都能加载一个不同的HTML页面。想象一下,就像在同一个浏览器里同时打开了好几扇窗户。不过说实话,现在你基本不会在新的项目里看到它了,因为它已经是个“老古董”了,在现代网页开发中几乎被完全淘汰了。

HTML中的框架集怎么使用? frameset标签应用实例

解决方案

要用

frameset
,你得在HTML文件的根部,也就是
<html>
标签里,直接用它替换掉
<body>
。这本身就挺特别的,因为它改变了页面内容的传统承载方式。然后,你可以在
frameset
里定义行或列,用
rows
cols
属性来指定每个区域的大小比例,比如
cols="25%,75%"
就是左边25%,右边75%。每个被切分出来的区域,你都需要用一个
frame
标签来指定它要加载哪个HTML文件,通过
src
属性来指向文件路径,
name
属性则可以给这个框架起个名字,方便其他框架里的链接通过
target
属性来控制内容显示到这个特定的框架里。

举个例子,一个简单的两列框架集看起来会是这样:

立即学习前端免费学习笔记(深入)”;

HTML中的框架集怎么使用? frameset标签应用实例
<!DOCTYPE html>
<html>
<head>
<title>我的框架集页面</title>
</head>
<frameset cols="20%, 80%">
  <frame src="navigation.html" name="nav_frame">
  <frame src="content.html" name="main_frame">
  <noframes>
    <body>
      <p>您的浏览器不支持框架集。请升级您的浏览器。</p>
      <p>或者您可以访问 <a href="navigation.html">导航</a> 和 <a href="content.html">内容</a>。</p>
    </body>
  </noframes>
</frameset>
</html>

这里,

navigation.html
会显示在左侧20%宽度的区域,而
content.html
则在右侧80%的区域。如果
navigation.html
里有一个链接想让内容显示在
main_frame
里,它会是这样:
<a href="newpage.html" target="main_frame">加载新内容</a>
。另外,
noframes
标签是为了那些不支持框架集的浏览器或者为了更好的可访问性而准备的,它里面的内容会在不支持框架集时显示出来。

为什么现代网页开发不再使用HTML框架集?

为什么我们现在很少见到

frameset
的身影了?这事儿得从好几个角度看。最直接的感受就是用户体验。你想想,一个页面里好几个独立滚动条,来回切换内容,点个返回键可能都不知道返回到哪个“层”了。书签也麻烦,你收藏的是整个框架集,而不是某个特定框架里的内容,下次打开可能还是最初状态。这在移动设备上更是灾难,屏幕那么小,再切分几个区域,简直没法用。

Avatar AI
Avatar AI

AI成像模型,可以从你的照片中生成逼真的4K头像

下载
HTML中的框架集怎么使用? frameset标签应用实例

从技术层面讲,SEO是个大问题。搜索引擎蜘蛛过来爬取内容时,面对框架集就有点懵了,它很难理解这些分散在不同文件里的内容到底有什么关联,哪些是核心。这就导致你的内容很难被有效索引,自然就影响了网站的排名。再者,无障碍性也差,屏幕阅读器对这种结构的处理能力很弱,对残障人士很不友好。还有安全问题,比如点击劫持(clickjacking),攻击者可以利用框架集把恶意页面覆盖在你的页面上,诱导用户点击。维护起来也复杂,你得管理多个独立的HTML文件,它们之间还有联动关系,调试起来头疼。这些缺点累积起来,就让它逐渐退出了历史舞台。

如果必须使用类似框架的功能,有哪些现代替代方案?

那如果我真的需要把页面分成几个区域,或者想在页面里嵌入点什么,现在该怎么做呢?首先,如果你只是想把一个页面布局成几块,比如左边导航右边内容,或者上下两部分,那CSS才是王道。Flexbox和Grid布局简直是为这种需求量身定制的,它们能让你非常灵活地控制元素的排列和尺寸,而且完全在一个文档流里,对SEO和无障碍性都非常友好。

比如,一个简单的两列布局,用CSS Flexbox可以这样实现:

<style>
  .container {
    display: flex;
    height: 100vh; /* 让容器占据整个视口高度 */
  }
  .nav {
    flex: 0 0 200px; /* 固定宽度导航 */
    background-color: #f0f0f0;
    padding: 15px;
  }
  .content {
    flex-grow: 1; /* 内容区域占据剩余空间 */
    padding: 15px;
  }
</style>

<div class="container">
  <div class="nav">
    <!-- 导航内容 -->
    <ul>
      <li><a href="#">链接1</a></li>
      <li><a href="#">链接2</a></li>
    </ul>
  </div>
  <div class="content">
    <!-- 主内容 -->
    <h1>欢迎来到主内容区</h1>
    <p>这里是页面的主要内容。</p>
  </div>
</div>

这种方式,所有的内容都在一个HTML文件里,管理和维护都方便得多。

如果说要嵌入外部内容,比如YouTube视频、地图或者其他网站的组件,那

<iframe>
标签就是你的朋友了。但要记住,
<iframe>
frameset
不是一回事。
<iframe>
是把一个独立的网页“塞”进你当前页面里的一个矩形区域,它更像是一个独立的“小窗口”,而不是把整个浏览器窗口切开。它通常用于加载来自不同域名的内容,并且可以通过
sandbox
属性提供一定的安全隔离。

再者,对于更复杂的应用,现代前端框架如React、Vue或Angular,配合路由管理,可以实现单页应用(SPA)的体验。页面内容可以动态加载和切换,而无需刷新整个页面,这提供了极佳的用户体验和强大的开发能力。

在实际项目中,如何判断何时可以考虑使用iframe,何时应避免?

所以,什么时候用

<iframe>
是明智之举,什么时候又该避开它呢?我的经验是,当你需要嵌入那些你无法完全控制,或者需要从一个完全独立的环境中加载的内容时,
<iframe>
是个不错的选择。比如,你网站上要显示一个第三方支付页面,或者一个在线客服聊天框,这些通常会通过
<iframe>
来加载,因为它能提供一定的安全隔离,防止外部脚本影响你的主页面,或者避免样式冲突。嵌入像Google Maps、YouTube视频播放器这样的第三方服务,
<iframe>
也是标准做法。它提供了一个隔离的沙盒环境,减少了安全风险。

但如果你的目标只是为了布局自己的页面内容,或者你想把自己的不同页面模块化,那请务必远离

<iframe>
。它会增加页面的加载负担,因为每个
<iframe>
都相当于加载了一个独立的浏览器上下文,这会消耗更多的内存和CPU资源。而且对SEO和用户体验来说,远不如直接用CSS布局来得优雅和高效。想象一下,如果你的整个网站都是用
<iframe>
套娃一样套起来的,那用户体验简直是灾难,用户的浏览器会变得非常迟钝,而且搜索引擎也很难理解你的网站结构。此外,
<iframe>
还可能带来一些可访问性问题,以及跨域通信的复杂性,所以除非有明确且必要的需求,否则最好避免使用它来构建你的主要页面结构。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
什么是搜索引擎
什么是搜索引擎

搜索引擎是一种互联网工具,用于帮助用户在网上查找信息。搜索引擎的目标是提供最准确、最有价值的搜索结果,使用户能够快速找到所需的信息。本专题为大家提供搜索引擎相关的各种文章、以及下载和课程。

487

2023.08.02

有哪些目录搜索引擎
有哪些目录搜索引擎

目录搜索引擎有Google、Bing、Yahoo、Baidu、DuckDuckGo等。想了解更多目录搜索引擎的相关内容,可以阅读本专题下面的文章。

6402

2023.11.06

搜索引擎营销的主要模式
搜索引擎营销的主要模式

搜索引擎营销的主要模式包括:1. 竞价排名(ppc);2. 搜索引擎优化(seo);3. 本地搜索营销;4. 购物广告;5. 视频广告;6. 展示广告;7. 社交媒体营销;8. 移动广告。想了解更多搜索引擎营销的相关内容,可以阅读本专题下面的文章。

473

2024.05.20

seo页面描述
seo页面描述

一个好的SEO页面描述应该包含关键词、简明扼要地概括网页的主题和内容、具有吸引力、与网页内容相符,并且是独特的。它不仅可以帮助搜索引擎了解网页的内容,还可以吸引用户点击进入网页。因此,编写一个优秀的SEO页面描述对于网页的排名和点击率都非常重要。

218

2023.08.31

wordpress seo
wordpress seo

WordPress网站SEO优化方法有:1、选择一个SEO友好的主题,具有清晰的代码结构,快速的加载速度和响应式设计;2、使用SEO插件,优化你的标题标签,元描述,关键字,XML站点地图等;3、优化你的内容,内容是SEO优化的核心;4、优化你的网站速度;5、创建友好的URL;6、使用内部链接;7、优化图像;8、使用社交媒体;9、定期更新你的网站;10、监控和分析你的网站等等。

435

2023.09.18

SEO诊断方法有哪些
SEO诊断方法有哪些

SEO诊断是一个综合性的工作,需要从网站结构、关键词优化、内容质量、外部链接、网站速度、移动友好性等多个方面进行评估和优化。通过进行SEO诊断,可以帮助网站提高在搜索引擎中的排名,从而增加流量和曝光度 。

298

2023.10.09

SEO关键词排名工具有哪些
SEO关键词排名工具有哪些

SEO关键词排名工具有Google关键词规划工具、百度关键词工具、SEMrush、Ahrefs、Moz Keyword Explorer、KWFinder、Ubersuggest、Keyword Surfer、AnswerThePublic和Google Trends。更多关于SEO关键词排名工具的文章,详情请继续阅读该专题下面的文章。php中文网欢迎大家前来学习。

390

2023.10.30

iframe写法有哪些
iframe写法有哪些

iframe写法有基本Iframe写法、嵌套Iframe写法、自适应宽高的Iframe写法、带有样式和属性的Iframe写法、内联Iframe写法和使用JavaScript动态创建Iframe写法。种写法都有自己的特点和适用场景。根据实际需求,选择合适的写法可以实现所需的功能和效果。

490

2023.10.19

C# ASP.NET Core微服务架构与API网关实践
C# ASP.NET Core微服务架构与API网关实践

本专题围绕 C# 在现代后端架构中的微服务实践展开,系统讲解基于 ASP.NET Core 构建可扩展服务体系的核心方法。内容涵盖服务拆分策略、RESTful API 设计、服务间通信、API 网关统一入口管理以及服务治理机制。通过真实项目案例,帮助开发者掌握构建高可用微服务系统的关键技术,提高系统的可扩展性与维护效率。

3

2026.03.11

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Sass 教程
Sass 教程

共14课时 | 0.9万人学习

Bootstrap 5教程
Bootstrap 5教程

共46课时 | 3.6万人学习

CSS教程
CSS教程

共754课时 | 42.1万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号