前置基础知识-HTML

一、HTML基础概念:认识网页的”构建语言“

1.1 什么是HTML?

HTML,即 HyperText Markup Language(超文本标记语言),是用于创建网页的标准标记语言。它并非编程语言(无法实现逻辑运算、循环等动态功能),而是通过一系列预定义的"标签",来描述网页的结构、内容类型与展示方式,例如定义标题、段落、图片、链接等元素。

  • 超文本(HyperText):突破普通文本的局限,可包含链接(实现页面跳转)、图片、音频、视频等多媒体内容,构建起网页间的关联网络。

  • 标记语言(Markup Language):以 <标签名> 的形式对内容进行"标记",告知浏览器内容的类型与用途。浏览器会根据这些标签的规则,将代码解析为用户可见的网页界面。

可以通过https://www.runoob.com/html/html-tutorial.html进行在线的练习

1.2 HTML 文档的基本结构

所有 HTML 文档都遵循固定的结构框架,浏览器会按照该结构自上而下解析内容。下面从"最小化 HTML 文档"入手,理解其核心组成部分:

<!DOCTYPE html>  <!-- 1. 文档类型声明:指定为 HTML5 文档 -->
<html lang="zh-CN">  <!-- 2. 根标签:整个文档的容器,lang 定义页面语言为中文 -->
  <head>  <!-- 3. 头部:存放文档元信息(不直接显示在页面可视区域) -->
    <meta charset="UTF-8">  <!-- 3.1 字符编码:确保中文等字符正常显示,避免乱码 -->
    <title>HTML 基础结构示例</title>  <!-- 3.3 网页标题:显示在浏览器标签栏 -->
  </head>
  <body>  <!-- 4. 主体:存放网页所有可见内容(文字、图片、按钮等) -->
    <!-- 这里是网页的可视内容 -->
    <h1>这是页面的一级标题</h1>
    <p>这是一个段落,用于展示网页的基本文本内容。</p>
  </body>
</html>

核心结构说明表

标签 / 声明 作用与重要性
必须放在文档第一行,声明文档类型为 HTML5,避免浏览器使用"兼容模式"解析导致样式错乱
根标签,所有其他 HTML 标签都必须嵌套在 内部,是文档的顶层容器
存放"元信息",如字符编码、网页标题、CSS 样式引用、JavaScript 脚本引用等,不直接显示
核心元标签!指定文档使用 UTF-8 字符编码,支持全球所有语言字符,是避免中文乱码的关键
定义网页标题,显示在浏览器标签栏,影响用户识别与搜索引擎优化(SEO)
网页的"可视区域",用户能看到的所有内容(文字、图片、链接、表单等)都在此定义

二、HTML 常用标签:构建网页的"基本零件"

HTML 标签是网页内容的"基本零件",不同标签对应不同功能。以下按类别讲解网络安全学习中高频用到的常用标签,每个类别均配套基础实验。

2.1 基本文本标签:定义文字内容与格式

基本文本标签用于组织网页中的文字内容,明确文字的层级(如标题、段落)与格式(如加粗、斜体)。

常用基本文本标签表

标签 作用 示例代码 说明

~
标题标签(1-6 级)

一级标题(最大、权重最高)

通常用于页面主标题(1 个页面建议只写 1 个),级别越低(如
)文字越小

段落标签

这是一个段落,浏览器会自动为段落添加上下间距,且段落内文字会自动换行。

用于包裹大段文本,区分不同内容块
加粗文本(强调重要性)

网络安全学习中,HTML基础是核心前置知识。

语义上表示"重要内容",视觉效果为加粗,比 标签更具语义性
斜体文本(强调重点)

学习时需重点关注 表单标签 的安全风险。

语义上表示"强调内容",视觉效果为斜体,比 标签更具语义性


强制换行标签

第一行文字

第二行文字(无需另起段落)

单标签(无需闭合),用于在段落内强制换行,不添加上下间距

水平线标签

学习目标


掌握HTML基础标签...

单标签,插入一条水平线,用于分割不同内容区域

2.2 style 只要是 HTML 元素,就能写 style 属性,美化界面


1.怎么写

<h1 style="color:red; font-size:32px;">标题</h1>
<p style="text-indent:2em; line-height:1.8;">段落</p>
<strong style="background:yellow;">加粗</strong>
<br style="clear:both;">   <!-- 甚至单标签也能写 -->
<hr style="border:1px dashed #ccc;">

2. style 里到底能放什么

值是 “一条或多条 CSS 声明”,格式永远相同:

style="属性1:值1; 属性2:值2; …"

常用且适合新手的“属性清单”

类别 可写属性 示例值 备注
文字颜色 color red#e33rgb(255,0,0) 三选一写法
字号 font-size 16px1.2rem120% 单位别丢
字重 font-weight boldnormal700 数字 100~900
字体 font-family "Microsoft YaHei", Arial 中文名加引号
斜体 font-style italicnormal
行高 line-height 1.524px 无单位表示倍数
水平对齐 text-align leftcenterright 左中右
垂直对齐 vertical-align topmiddlebottom 高中低
缩进 text-indent 2em20px 段落首行
装饰线 text-decoration underlineline-through 下划、删除线
背景色 background / background-color yellow#ff0
边框 border 1px solid #000 三要素:宽 型 色,

1px的黑色实线
内边距 padding 10px5px 10px 上右下左
外边距 margin 同上 负值也允许
圆角 border-radius 4px50%
宽度 width 200px50% 块级才生效
高度 height 100px
显示方式 display blockinline-blocknone 换行/隐藏
阴影 box-shadow 2px 2px 4px #999
换行 white-space nowrappre-wrap

任何合法 CSS 属性都能往里塞,语法与独立 .css 文件完全一致,只是作用范围仅对当前元素生效(行内样式优先级最高)。

基础实验 1:用VS Code创建第一个 HTML 文档并使用行内样式美化

实验目标

  • 掌握 HTML 文档的基本结构;能独立创建简单页面并在浏览器预览;

  • 用行内 style 给文字加颜色、改字号、设对齐方式。


实验要求

  1. 准备工具

    安装并打开 VS Code(或 Sublime Text)。
  2. 新建文件,写出最简 HTML5 骨架。
  3. 内必须包含:
    • 指定网页的字符编码为 UTF-8
    • 网页标题为:我的第一个 HTML 页面
  4. 内必须包含下列 3 个元素,并按指定样式写行内 style:
    • 一个 一级标题:文字自拟,要求 红色、居中、字号 32 px
    • 一个 二级标题:文字自拟,要求 字号 20 px、右对齐
    • 一个 段落:文字自拟,要求 字号 18 px、颜色 #0066cc
  5. 文件保存为 test1.html`(UTF-8 编码),双击浏览器打开,确认颜色、字号、对齐均生效。

示例代码

<!DOCTYPE html>
<html lang="zh-CN">
<head>
  <meta charset="UTF-8">
  <title>我的第一个 HTML 页面</title>
</head>
<body>
  <!-- 红色、居中、大字 -->
  <h1 style="color:red; text-align:center; font-size:32px;">一级标题示例</h1>

  <!-- 20px、右对齐 -->
  <h2 style="font-size:20px; text-align:right;">二级标题:我的学习目标</h2>

  <!-- 18px、蓝色 -->
  <p style="font-size:18px; color:blue;">在这里写下你的学习目标……</p>
</body>
</html>

实验思考(原题不变)

  1. 删除 后刷新页面,可能出现什么问题?为什么?
  2. 换成
    后,文字大小和权重有何变化?

3. 小提醒

  • 行内 style 适合快速测试极个别特殊元素;正式项目请移步外部样式表,方便维护。
  • 单标签(


    )也能写,但只能改自身外观,不会包裹文字。

“外部样式表” = 把 CSS 单独写进一个 .css 文件,再让 HTML 去“引用”它。

好处:一份样式可给无数页面用,一改全站变,代码清爽。

2.3 CSS速成

1. 三步速成

① 新建文件

项目目录里新建 style.css(文件名随意,后缀必须是 .css)。

② 写样式(语法与行内 style 相同,只是去掉引号)

/* ===== ID 选择器 ===== */
#page-title {
    color: #c00;
    text-align: center;
}

/* ===== 类选择器 ===== */
.main-text {
    line-height: 1.8;
    text-indent: 2em;
}

.highlight {
    background: yellow;
}

/* ===== 保留原全局样式 ===== */
body {
    margin: 0;
    font-family: "Microsoft YaHei", Arial;
    background: #f5f5f5;
}

③ 在 HTML 里“链接”它

把下面这行扔在 里即可(href 写相对路径):

<link rel="stylesheet" href="style.css">

完整最小可运行示例:

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="utf-8">
    <title>外部样式表演示</title>
    <link rel="stylesheet" href="style.css">
</head>
<body>
    <h1 id="page-title">Hello 外部样式</h1>
    <p class="main-text">这段文字受 style.css 控制,<strong class="highlight">高亮</strong>样式也来自 CSS。</p>
</body>
</html>

双击 css_style.html` → 效果已生效。

2. CSS 语法口诀(3 句话)

选择器 { 属性1: 值1; 属性2: 值2; }
  • 选择器:告诉浏览器“样式给谁用”
    • 标签选择器:h1 { ... }
    • 类选择器:.box { ... }(HTML 对应 class="box"
    • ID 选择器:#nav { ... }(HTML 对应 id="nav"
  • 花括号里任意放“属性:值;”列表,与行内 style 完全一致。
  • 注释写法:/* 注释内容 */

3. 路径怎么写

场景 href 示例
css 与 html 在同一目录 href="style.css"
css 在子文件夹 css/ href="css/style.css"
css 在上一级目录 href="../style.css"
使用绝对路径(少见) href="/assets/style.css"

4. 一个页面可链多个 CSS

<link rel="stylesheet" href="reset.css">
<link rel="stylesheet" href="layout.css">
<link rel="stylesheet" href="color.css">

后加载的优先级更高,可用来分层管理。

5.CSS 优先级口诀(从高到低):

  1. 行内样式(style="") > 
  2. #ID 选择器 > 
  3. .类/伪类/属性 选择器 > 
  4. 元素/伪元素 选择器 > 
  5. 浏览器默认样式

同一条规则在同一来源里出现多次时,“后写的”覆盖“先写的”(下面的优先)。

因此:

  • 如果 style.css 里先写 p{color:red} 再写 p{color:blue},最终文字是 蓝色
  • 如果 index.html仍保留行内 style="color:red",不管外链/内联怎么写,都以行内样式为准(红色)。

6. 调试小技巧

  • F12 → Elements → 右侧 Styles 面板能看到哪条规则生效、来自哪个文件。
  • 改数值后实时预览,确认无误再复制回 .css 保存。


基础实验 2:给“实验 1”页面穿上“外链 CSS”外套


实验目标

  1. 把实验 1 的“行内 style”全部迁移到独立 .css 文件,体验“一处改、全站变”的维护优势。
  2. 掌握 标签引用外部样式表的正确写法与路径规则。
  3. 熟练使用“标签 + 类 + ID”三种选择器。

实验要求

  1. 沿用实验 1 的 test1.html → 复制一份并改名为 test2.html
  2. 在项目根目录新建 style.css(与 test2.html 同级)。
  3. 把实验 1 里写过的 3 条行内样式“搬”到 style.css 中,规则如下:
    • 一级标题:红色、居中、字号 32 px → 用 ID 选择器 #mainTitle
    • 二级标题:字号 20 px、右对齐 → 用 类选择器 .subTitle
    • 段落:字号 18 px、颜色 #0066cc → 用 标签选择器 p(影响全部段落)
  4. 删除 test2.html 里所有行内 style="",改为用 idclass 调用对应样式。
  5. 末尾加入 完成外链。

示例代码

文件① test2.html

<!DOCTYPE html>
<html lang="zh-CN">
<head>
  <meta charset="UTF-8">
  <title>我的第一个 HTML 页面</title>
  <!-- ① 外链 CSS -->
  <link rel="stylesheet" href="style.css">
</head>
<body>
  <!-- ② 用 id 调用主标题样式 -->
  <h1 id="mainTitle">欢迎来到我的第一个网页</h1>

  <!-- ③ 用 class 调用副标题样式 -->
  <h2 class="subTitle">实验 2:把样式搬到外部文件</h2>

  <!-- ④ 用标签选择器自动匹配 -->
  <p>这段文字通过外部 style.css 设置字号 18 px、颜色 #0066cc,一改全站变!</p>
</body>
</html>

文件② style.css (与 test2.html 放在同一目录)

/* ===== ① ID 选择器:主标题 ===== */
#mainTitle {
    color: red;
    text-align: center;
    font-size: 32px;
}

/* ===== ② 类选择器:副标题 ===== */
.subTitle {
    font-size: 20px;
    text-align: right;
}

/* ===== ③ 标签选择器:所有段落 ===== */
p {
    font-size: 18px;
    color: #0066cc;
}

/* ===== ④ 可选彩蛋:给整个页面加个淡蓝背景 ===== */
body {
    background-color: #f0f5ff;
    margin: 0;
    padding: 20px;
    font-family: "Microsoft YaHei", Arial;
}

实验思考

  1. href="style.css" 故意写成 href="css/style.css" 后刷新,观察现象并解释原因。
  2. style.css 最底部再加一条 body { background-color:#e9f0ff; },优先级会覆盖行内样式吗?为什么?
  3. 再新建 about.html,同样链接 style.css,看两份网页能否共享同一样式。

2.2 图片标签 :嵌入图像内容

图片标签 是单标签(无需闭合),用于在网页中插入本地图片或网络图片,是"图片马""图片钓鱼"等攻击的常见载体,需重点掌握。

基本语法

<img src="图片路径" alt="图片加载失败时的提示文字" width="图片宽度" height="图片高度" title="鼠标悬浮时的提示文字">

核心属性说明

属性 作用 取值示例 安全注意点
src 必选属性,指定图片的"路径"(本地路径或网络 URL) 1. 本地图片:src="images/photo.jpg"(图片需放在 images 文件夹中,与 HTML 文件同级)

2. 网络图片:src="https://example.com/photo.jpg"
风险点:若 src 被篡改(如指向恶意图片马),可能导致服务器被入侵;若指向不存在的路径,图片会加载失败
alt 必选属性,图片加载失败时显示的提示文字(无障碍访问必备) alt="校园风景图" 无图片时,用户可通过 alt 文字了解图片内容,避免信息缺失
width/height 可选属性,设置图片宽度 / 高度(单位:像素 px 或百分比 % width="500"(仅设宽度,高度会按比例自动调整)或 width="50%"(占父容器宽度的 50%) 建议只设置一个属性(如仅设 width),避免图片拉伸变形
title 可选属性,鼠标悬浮在图片上时显示的提示文字 title="点击查看大图" 用于补充图片信息,提升用户体验

2.3 超链接标签 :实现页面跳转

超链接标签 是网页间跳转的核心,也是 XSS 攻击、钓鱼攻击的高频利用点,必须熟练掌握其语法与安全注意事项。

基本语法

<a href="目标地址" target="打开方式" rel="安全属性">链接显示文本/图片</a>

核心属性说明

属性 作用 取值示例 安全注意点
href 必选属性,指定链接的"目标地址" 1. 外部网页:href="https://www.baidu.com"

2. 本地页面:href="page2.html"(需与当前页面同级)

3. 锚点跳转:href="#top"(跳转到页面中 id="top" 的标签位置)

4. 邮箱链接:href="mailto:test@example.com"
高危风险点!若 href 被注入恶意代码(如 href="javascript:alert('XSS测试')"),可能触发 XSS 攻击;若指向钓鱼网站,会诱导用户泄露信息
target 可选属性,设置链接的打开方式 1. _self:默认值,在当前窗口打开链接

2. _blank:在新窗口打开链接

3. _parent/_top:用于框架页面(较少用)
若用 _blank 打开外部链接,必须添加 rel="noopener noreferrer",防止恶意页面通过 window.opener 劫持当前窗口
rel 可选属性,定义当前页面与目标页面的关系,主要用于安全加固 rel="noopener noreferrer" 搭配 target="_blank" 使用,切断新窗口与原窗口的关联,防止窗口劫持

安全示例:外部链接的安全写法

<!-- 安全的外部链接:新窗口打开+防止劫持 -->
<a href="https://www.zhihu.com" target="_blank" rel="noopener noreferrer">知乎(新窗口打开)</a>

基础实验 3:图片 & 超链接综合实战


实验目标

  1. 正确插入本地图片与网络图片,能使用 width/height/alt/title 属性并知悉安全风险。
  2. 能写出 3 类超链接:外部网页、本地页面、锚点跳转,并主动加 rel="noopener noreferrer" 防劫持。
  3. 体验“图片即链接”的常用做法,理解 javascript: 伪协议的危害。

实验要求

  1. 环境准备

    • 用实验 1 的文件夹,新建 test3.html
    • 在同目录放 1 张本地图 pic.jpg;再新建空白页 page2.html(内容任意)。
  2. 图片区( 必做 3 项)

    ① 本地图: 仅设 width="300",保留原始比例;alt 写“校园风景”。

    ② 网络图:调用 https://picsum.photos/400/300alt 写“随机网络图”。

    ③ 把①的图用 包起来,点击后在新窗口跳到 https://www.baidu.com;记得加安全属性。

  3. 链接区( 必做 3 项)

    ① 外部链接:文字“去百度”;target="_blank";必须带 rel="noopener noreferrer"

    ② 本地链接:文字“跳到第二页”;href="page2.html";默认 _self

    ③ 锚点链接:顶部放

    ,底部放“回到顶部”。

  4. 可选挑战

    • 新建一段代码 点我,测试点击效果,并记录控制台行为。
  5. 文件保存 test3.html + page2.html + pic.jpg 放同一目录,双击 test3.html 验收。



示例代码

<!DOCTYPE html>
<html lang="zh-CN">
<head>
  <meta charset="UTF-8">
  <title>图片与链接实验</title>
</head>
<body>
  <div id="top"></div>
  <h1>图片与超链接实验</h1>

  <!-- 本地图片当链接 -->
  <a href="https://baidu.com" target="_blank" rel="noopener noreferrer">
    <img src="pic.jpg" alt="校园风景" width="300">
  </a>

  <!-- 网络图片 -->
  <img src="https://picsum.photos/400/300" alt="随机网络图">

  <!-- 三种链接 -->
  <p>
    <a href="https://www.baidu.com" target="_blank" rel="noopener noreferrer">去百度</a>
  </p>
  <p>
    <a href="page2.html">跳到第二页</a>
  </p>
  <p>
    <a href="#top">回到顶部</a>
  </p>
  <p><a href="javascript:alert('XSS测试')">危险链接(别在生产环境用)</a></p>
</body>
</html>

实验思考

  1. 同时固定 width="300" height="500",且原图比例 4:3,会出现什么变形?如何避免?
  2. 去掉外部链接的 rel="noopener noreferrer" 后,恶意目标页可通过什么对象对当前页做“窗口劫持”?

2.4 列表标签:组织有序 / 无序内容

列表标签用于将多个相关内容(如步骤、分类、要点)以"列表"形式展示,分为"无序列表"和"有序列表",是网页中常见的内容组织方式。

1. 无序列表
    :内容无先后顺序

    用"项目符号"(如圆点、方块)标记每个列表项,适用于无先后顺序的内容(如"学习重点""功能列表")。

    基本语法

    <ul type="项目符号类型">
      <li>列表项1</li>
      <li>列表项2</li>
      <li>列表项3</li>
    </ul>
    
    • type 可选属性:disc(默认,实心圆点)、circle(空心圆点)、square(实心方块);
    • 注意:
    • (list item)是"列表项标签",必须嵌套在
          内部,不能单独使用。

        2. 有序列表
          :内容有先后顺序

          用"数字 / 字母"标记每个列表项,适用于有先后顺序的内容(如"实验步骤""排名")。

          基本语法

          <ol type="序号类型" start="起始序号">
            <li>第一步:准备工具</li>
            <li>第二步:编写代码</li>
            <li>第三步:测试效果</li>
          </ol>
          
          • type 可选属性:1(默认,数字)、A(大写字母)、a(小写字母)、I(大写罗马数字)、i(小写罗马数字);
          • start 可选属性:设置序号的起始值(如 start="3",序号从 3 开始)。

          基础实验 :创建有序 / 无序列表(可选)

          实验目标

          掌握

              标签的使用,能根据内容需求选择合适的列表类型。

              实验步骤

              1. 创建无序列表:在 中添加
                  标签,type 设为 square,列表项为"HTML 基础标签""图片标签""超链接标签""表单标签";
                • 创建有序列表:在无序列表下方添加
                    标签,type 设为 Astart 设为 2,列表项为"学习 HTML 常用标签""完成基础实验""分析标签安全风险";
                  1. 预览与调整:打开 HTML 文件,查看列表样式是否正确(无序列表为方块符号,有序列表从 B 开始);尝试修改 typestart 的值,观察列表变化。

                  实验思考

                  • 若在
                      标签内部直接写文字(不嵌套
                    • ),浏览器会如何解析?为什么?

                    2.5 表格标签:展示结构化数据

                    表格标签用于将数据以"行 + 列"的结构化形式展示(如成绩表、产品信息表),在后台管理系统、数据统计页面中广泛应用,也可能因代码不规范导致数据泄露风险。HTML 表格通过

                    (表格容器)、(行)、(单元格)等标签组合实现。

                    核心标签与语法

                    一个完整的表格由"表格容器 + 行 + 单元格"组成,复杂表格还可包含"表头""表格标题""表格分区":

                    <table border="1" width="500" align="center">
                      <!-- 表格标题(可选):位于表格上方,居中显示 -->
                      <caption>HTML 常用标签汇总表</caption>
                      <!-- 表头(可选):用于定义列标题,文字默认加粗居中 -->
                      <thead>
                        <tr>
                          <th>标签名称</th>
                          <th>功能描述</th>
                          <th>安全风险等级</th>
                        </tr>
                      </thead>
                      <!-- 表格主体(必选):存放表格核心数据 -->
                      <tbody>
                        <tr>
                          <td>&lt;img&gt;</td>
                          <td>插入图片</td>
                          <td>中(可能被用于图片马)</td>
                        </tr>
                        <tr>
                          <td>&lt;a&gt;</td>
                          <td>创建超链接</td>
                          <td>高(可能被用于XSS、钓鱼)</td>
                        </tr>
                        <tr>
                          <td>&lt;form&gt;</td>
                          <td>创建表单</td>
                          <td>高(可能被用于CSRF、数据窃取)</td>
                        </tr>
                      </tbody>
                      <!-- 表格底部(可选):存放汇总信息(如合计、备注) -->
                      <tfoot>
                        <tr>
                          <td colspan="3">注:标红标签需重点关注安全风险</td>
                        </tr>
                      </tfoot>
                    </table>
                    

                    核心标签与属性说明

                    ,文字默认居中显示// 内部 内部 区别: 用于标题, 用于数据 内部//,但建议显式声明,便于后续 CSS 样式控制和 JavaScript 操作
                    标签 / 属性 作用 取值示例 注意事项
                    表格容器标签:所有表格内容必须嵌套在
                    内部
                    常用属性:border(表格边框宽度,默认 0)、width(表格宽度)、align(表格对齐方式:left/center/right)
                    表格标题标签:位于
                    内部最上方,用于描述表格用途
                    学生成绩表
                    一个表格只能有一个
                    表格行标签:定义表格的"一行",嵌套在
                    常用属性:align(行内文字对齐方式)、bgcolor(行背景色,不推荐使用,后续用 CSS 替代)
                    表头单元格标签:定义"列标题",嵌套在
                    标签名称 文字默认加粗居中,与
                    数据单元格标签:定义"数据单元格",嵌套在
                    合计 常用属性:colspan(跨列合并单元格,如 colspan="2" 表示跨 2 列)、rowspan(跨行合并单元格,如 rowspan="3" 表示跨 3 行)
                    表格分区标签:将表格分为"表头、主体、底部",用于结构化管理表格内容 - 即使不写,浏览器也会默认生成
                    属性 全称含义 作用 举例 视觉效果
                    colspan column span(跨列) 让单元格横向占 N 列 colspan="2" 把原本相邻的 2 列合并成 1 个大格
                    rowspan row span(跨行) 让单元格纵向占 N 行 rowspan="3" 把原本上下相邻的 3 行合并成 1 个大格

                    结构化表格CSS常用

                    完整示例:

                    table {
                      border-collapse: collapse;
                      width: 500px;
                      margin: 0 auto;
                    }
                    
                    th, td {
                      text-align: center;   /* 单元格文字左右居中 */
                      vertical-align: middle; /* 单元格文字上下居中 */
                      padding: 6px; /* 让文字与边框留点距离,更好看 */
                    }
                    

                    这样整个表格的单元格内容(不论是表头 th 还是数据 td)都会水平 + 垂直居中

                    基础实验 :创建结构化表格(可选)

                    实验目标

                    掌握表格标签的组合使用,能创建包含"表头、主体、标题"的结构化表格,并实现单元格合并。

                    实验步骤

                    1. 明确表格需求:创建"网络安全学习进度表",包含列:"阶段""学习内容""预计耗时""完成状态",共 3 行数据,最后一行添加"备注"(跨 4 列);
                    2. 编写代码
                    <style>
                      table, th, td {
                        border: 1px solid #000;   /* 顺便把边框颜色也带上 */
                        text-align: center;       /* 水平居中 */
                        vertical-align: middle;   /* 垂直居中 */
                      }
                    </style>
                    <table border="1" width="700" align="center">
                      <caption>网络安全学习进度表</caption>
                      <thead>
                        <tr>
                          <th>阶段</th>
                          <th>学习内容</th>
                          <th>预计耗时</th>
                          <th>完成状态</th>
                        </tr>
                      </thead>
                      <tbody>
                        <tr>
                          <td>第一阶段</td>
                          <td>HTML基础</td>
                          <td>2天</td>
                          <td>未完成</td>
                        </tr>
                        <tr>
                          <td>第二阶段</td>
                          <td>CSS与JavaScript基础</td>
                          <td>3天</td>
                          <td>未开始</td>
                        </tr>
                        <tr>
                          <td>第三阶段</td>
                          <td>XSS攻击原理与防御</td>
                          <td>4天</td>
                          <td>未开始</td>
                        </tr>
                      </tbody>
                      <tfoot>
                        <tr>
                          <td colspan="4">备注:每天学习时长建议不少于2小时</td>
                        </tr>
                      </tfoot>
                    </table>
                    
                    1. 预览与调整:打开 HTML 文件,查看表格是否完整显示(边框、对齐、单元格合并是否正确);尝试添加 rowspan 属性(如将"未完成""未开始"所在单元格合并),观察表格变化。

                    实验思考

                    • 若表格数据量很大(如 100 行),不使用 // 分区,会对后续维护(如用 JavaScript 筛选数据)造成什么影响?
                    • 同时设置 colspanrowspan 时,需要注意什么?(如 colspan="2" rowspan="3"

                    基础实验 4:列表与表格综合实验

                    实验目标

                    1. 会用
                          组织无/有序内容
                        1. 会用完整表格标签
                          展示结构化数据,并掌握 colspan/rowspan 合并单元格
                        2. 体验“同一样式表”控制多种元素:列表符号、表格边框、文字对齐全部写进 style.css

                        实验要求

                        1. 文件准备
                          • 沿用前面文件夹,新建 test4.html`
                          • 同级准备 test4-style.css(后面统一写样式)
                        2. 列表区( 内顺序不限)

                          ① 无序列表:
                            列出 4 个“前端基础标签名” ② 有序列表:
                              列出 3 条“学习步骤”
                            1. 表格区 ③ 创建“课程进度表”:列标题“阶段、内容、天数、状态”共 4 列;数据 ≥ 3 行

                              ④ 表尾合并:用 写一句“备注:每天学习 2 小时”

                              ⑤ 给表格加 width="600"border="1"align="center"(先用 html 属性,后再用 css 重绘)
                            2. 样式统一(style.css
                              • 无序列表符号改为实心方块 ( list-style-type: square;
                              • 有序列表type改为罗马数字 ( list-style-type: upper-roman;
                              • 表格文字居中、合并边框(border-collapse: collapse)、表头加背景 #eef、表尾文字加粗——全部用外部 CSS 实现


                            示例代码

                            test4.html

                            <!DOCTYPE html>
                            <html lang="zh-CN">
                            <head>
                              <meta charset="UTF-8">
                              <title>列表与表格综合实验</title>
                              <link rel="stylesheet" href="test4-style.css">
                            </head>
                            <body>
                              <h1>前端基础进度一览</h1>
                            
                              <!-- ① 无序列表:默认 disc,后面 CSS 改成 square -->
                              <h2>重点标签清单(无序)</h2>
                              <ul>
                                <li>img</li>
                                <li>a</li>
                                <li>table</li>
                                <li>form</li>
                              </ul>
                            
                              <!-- ② 有序列表:type="A" start="3",后面 CSS 改成罗马数字 -->
                              <h2>学习步骤(有序)</h2>
                              <ol type="A" start="3">
                                <li>掌握 HTML 结构</li>
                                <li>完成列表实验</li>
                                <li>完成表格实验</li>
                              </ol>
                            
                              <!-- ③④⑤ 表格区 -->
                              <h2>课程进度表</h2>
                              <table width="600" border="1" align="center">
                                <caption>网络安全学习进度</caption>
                                <thead>
                                  <tr>
                                    <th>阶段</th>
                                    <th>内容</th>
                                    <th>天数</th>
                                    <th>状态</th>
                                  </tr>
                                </thead>
                                <tbody>
                                  <tr>
                                    <td>1</td>
                                    <td>HTML 基础</td>
                                    <td>2</td>
                                    <td>已完成</td>
                                  </tr>
                                  <tr>
                                    <td>2</td>
                                    <td>CSS 入门</td>
                                    <td>3</td>
                                    <td>进行中</td>
                                  </tr>
                                  <tr>
                                    <td>3</td>
                                    <td>JS 基础</td>
                                    <td>4</td>
                                    <td>未开始</td>
                                  </tr>
                                </tbody>
                                <tfoot>
                                  <tr>
                                    <td colspan="4">备注:每天学习 2 小时</td>
                                  </tr>
                                </tfoot>
                              </table>
                            </body>
                            </html>
                            

                            test4-style.css

                            /* ① 无序列表符号 → 实心方块 */
                            ul {
                              list-style-type: square;
                            }
                            
                            /* ② 有序列表符号 → 罗马数字(覆盖 html type="A") */
                            ol {
                              list-style-type: upper-roman;
                            }
                            
                            /* ③ 表格统一美化 */
                            table {
                              text-align: center;   /* 文字水平居中 */
                              border-collapse: collapse; /* 合并边框 */
                            }
                            th {
                              background-color: #eef; /* 表头背景 #eef */
                            }
                            tfoot td {
                              font-weight: bold;   /* 表尾文字加粗 */
                            }
                            

                            实验思考

                            1. 如果把html的内联样式 oltype="A" 改成 type="I",列表符号会怎样变化?
                            2. 同时给 colspan="2" rowspan="2",需要注意什么才不会导致表格错位?

                            2.6 表单及各类输入类型:用户数据交互的核心(安全高危点!)

                            表单是网页与用户交互的核心组件(如登录、注册、提交数据),也是 SQL 注入、CSRF、数据窃取等攻击的主要目标,必须全面掌握其语法与安全风险。

                            2.6.1 表单容器标签

                            是表单的"容器",所有表单控件(如输入框、按钮)必须嵌套在
                            内部,用于定义"数据提交的目标地址"和"提交方式"。

                            基本语法

                            <form action="数据提交的后端接口地址" method="提交方式" enctype="数据编码格式" target="提交后页面打开方式">
                              <!-- 表单控件:输入框、密码框、按钮等 -->
                            </form>
                            

                            核心属性说明

                            属性 作用 取值与示例 安全注意点
                            action 必选属性,指定表单数据提交到的"后端接口地址"(如登录接口、注册接口) 1. 绝对路径:action="https://example.com/login"

                            2. 相对路径:action="login.php"
                            风险点:若后端接口未验证"请求来源",可能遭 CSRF 攻击;需确保接口使用 HTTPS 协议(防止数据传输被窃听)
                            method 必选属性,指定数据提交方式,主要有 GETPOST 两种 method="POST" - GET:数据拼在 URL 中(可见、不安全,适合少量非敏感数据,如搜索)

                            - POST:数据放在请求体中(不可见、相对安全,适合敏感数据,如密码)

                            安全建议:所有敏感数据提交必须用 POST
                            enctype 可选属性,指定表单数据的"编码格式",默认值为 application/x-www-form-urlencoded 1. 普通数据:默认值(无需显式设置)

                            2. 文件上传:必须设为 multipart/form-data

                            3. 纯文本:text/plain(极少用)
                            风险点:上传文件时若未设为 multipart/form-data,会导致文件数据损坏;若后端未验证文件类型,可能遭"文件上传漏洞"攻击
                            target 可选属性,指定"提交后页面的打开方式",与 标签的 target 用法一致 1. _self:当前窗口打开(默认)

                            2. _blank:新窗口打开
                            若用 _blank,建议添加 rel="noopener noreferrer"(防止窗口劫持),但
                            标签不直接支持 rel,需通过 JavaScript 辅助实现

                            2.6.2 常用表单控件(输入类型)

                            表单控件通过 标签实现,核心是 type 属性 —— 不同 type 对应不同功能的控件(如文本输入、密码输入、文件上传)。

                            常用输入类型汇总表

                            type 控件名称 基本语法 功能与安全注意点
                            text 单行文本输入框 用于输入普通文本(如用户名、手机号);安全注意点:需限制输入长度(maxlength),防止"超长字符注入";需过滤特殊字符(如 ),防止 XSS
                            password 密码输入框 用于输入敏感密码,输入内容会被"圆点"隐藏;安全注意点:必须搭配 POST 提交;需添加 required(必填验证);后端需对密码加密存储(如用 MD5、SHA256),不可明文存储
                            radio 单选按钮 用于"二选一"或"多选一"(如性别、是否同意协议);关键属性:name 必须相同(确保同一组单选按钮互斥);checked 表示默认选中;安全注意点:后端必须重新验证单选值(防止用户篡改前端值,如将 value="male" 改为 value="admin"
                            checkbox 复选框 用于"多选多"(如兴趣爱好、权限选择);关键属性:name 相同(表示同一组复选框);checked 表示默认选中;安全注意点:后端需验证"选中值是否在允许范围内"(防止越权,如勾选"管理员权限")
                            file 文件上传控件 用于让用户上传本地文件(如头像、文档);关键属性:accept(限制上传文件类型,如 image/* 表示仅图片);multiple(允许同时上传多个文件);安全高危点!必须验证:① 文件类型(后缀 + 内容,防止伪装)② 文件大小(防止恶意上传超大文件占满服务器空间)③ 文件内容(防止上传木马、病毒)
                            submit 提交按钮 点击后触发表单提交(将数据发送到 action 指定的接口);value 属性定义按钮显示文字;可通过 style 简单设置按钮样式
                            reset 重置按钮 点击后将表单所有控件恢复到"初始状态"(如清空输入框、取消选中);注意:重置仅作用于前端,不会影响后端数据
                            button 普通按钮 无默认功能,需搭配 JavaScript 实现自定义逻辑(如获取验证码、弹窗提示);onclick 属性指定点击后执行的函数
                            hidden 隐藏控件(不可见) 用于存储"无需用户输入但需提交的隐藏数据"(如用户 ID、表单版本号);安全风险点:前端隐藏数据可被篡改(如修改 user_id999 查看他人数据),后端必须重新验证该数据的合法性

                            示例代码

                            form-demo.html

                            <!DOCTYPE html>
                            <html lang="zh-CN">
                            <head>
                              <meta charset="UTF-8">
                              <title>用户注册</title>
                              <link rel="stylesheet" href="reg-style.css">
                            </head>
                            <body>
                              <h1>新用户注册</h1>
                              <form action="" method="POST" enctype="multipart/form-data">
                                <p>
                                  <label>用户名:</label>
                                  <input type="text" name="user" maxlength="12" placeholder="4-12位字母数字" required>
                                </p>
                            
                                <p>
                                  <label>密 码:</label>
                                  <input type="password" name="pwd" required>
                                </p>
                            
                                <p>
                                  <label>性 别:</label>
                                  <label><input type="radio" name="gender" value="male" checked></label>
                                  <label><input type="radio" name="gender" value="female"></label>
                                </p>
                                <p>
                                  <label>爱 好:</label>
                                  <label><input type="checkbox" name="hobby" value="code"> 编程</label>
                                  <label><input type="checkbox" name="hobby" value="hack"> 网络安全</label>
                                  <label><input type="checkbox" name="hobby" value="read"> 阅读</label>
                                </p>
                                <p>
                                  <input type="submit" value="立即注册">
                                  <input type="reset" value="清空">
                                </p>
                              </form>
                            </body>
                            </html>
                            

                            2.6.3 其他常用表单控件

                            外,表单还常用 (多行文本输入框)和 (下拉选择框):

                            1. 多行文本输入框

                              用于输入大段文本(如留言、备注、富文本内容),支持换行。

                            <label for="note">学习笔记:</label>
                            <textarea name="note" id="note" rows="5" cols="50" placeholder="请输入学习笔记...">默认文本</textarea>
                            
                            • 核心属性:rows(文本框行数,控制高度)、cols(文本框列数,控制宽度)、placeholder(提示文字);
                            • 安全注意点:需过滤 等恶意标签(防止 XSS),建议限制输入长度(后端验证)。

                            • 下拉选择框

                              用于从多个选项中选择一个(或多个),节省页面空间(如选择城市、学历)。

                            <label for="education">学历:</label>
                            <select name="education" id="education" multiple size="3">
                              <option value="">请选择学历</option>
                              <option value="high_school">高中</option>
                              <option value="college" selected>大专</option>
                              <option value="bachelor">本科</option>
                              <option value="master">硕士</option>
                            </select>
                            
                            • 核心标签与属性:
                              • :下拉框容器,multiple 表示"允许多选"(按住 Ctrl 键选择),size 表示"显示的选项数量";
                              • :下拉选项,value 是提交到后端的实际值,selected 表示"默认选中";
                            • 安全注意点:后端必须验证 value 值(防止用户篡改前端选项,如添加 value="admin" 选项)。

                            基础实验 5:制作“用户注册”表单(单页版)

                            实验目标

                            1. 会用
                              创建完整注册页:用户名、密码、性别单选、爱好多选、学历下拉、头像上传、备注多行文本
                            2. 掌握 POST 提交、requiredmaxlengthaccept 等安全属性
                            3. 体验“文件上传必填 multipart/form-data”与“单选/下拉后端需重验”的安全点

                            实验要求

                            1. 文件准备
                              • 沿用文件夹,新建 test5.html
                              • 图片准备:任意 jpg/png 一张,用来测试上传
                            2. 表单区(所有控件放在
                              内) ① 用户名:type="text"name="user"placeholdermaxlength="12"required ② 密码:type="password"name="pwd"required ③ 性别单选:同一 name="gender",值 male/female,默认选一项 ④ 爱好多选:同一 name="hobby",至少 3 个选项,默认任选 ⑤ 学历下拉:,含“请选择”占位项 + 3 个真实选项 ⑥ 头像上传: ⑦ 备注多行: ⑧ 提交按钮:type="submit",文字“立即注册” ⑨ 重置按钮:type="reset",文字“清空”
                            3. 安全设置
                              • 表单用 method="POST"enctype="multipart/form-data"action=""(空串表示提交到当前页,方便看地址栏无数据泄露)
                              • 文件上传区写 required 强制选图
                              • 所有敏感控件加 required 前端校验
                            4. 样式(可选) reg-style.css 给表单加宽度、居中、按钮颜色即可
                            5. 验证步骤
                              • 填写 → F12 Network 看是否 POSTQuery String 为空(密码不会挂在地址栏)
                              • 不选文件直接点提交,浏览器应提示“请选择文件”


                            示例代码

                            <!DOCTYPE html>
                            <html lang="zh-CN">
                            <head>
                              <meta charset="UTF-8">
                              <title>用户注册</title>
                              <link rel="stylesheet" href="reg-style.css">
                            </head>
                            <body>
                              <h1>新用户注册</h1>
                              <form action="" method="POST" enctype="multipart/form-data">
                                <p>
                                  <label>用户名:</label>
                                  <input type="text" name="user" maxlength="12" placeholder="4-12位字母数字" required>
                                </p>
                            
                                <p>
                                  <label>密 码:</label>
                                  <input type="password" name="pwd" required>
                                </p>
                            
                                <p>
                                  <label>性 别:</label>
                                  <label><input type="radio" name="gender" value="male" checked></label>
                                  <label><input type="radio" name="gender" value="female"></label>
                                </p>
                            
                                <p>
                                  <label>爱 好:</label>
                                  <label><input type="checkbox" name="hobby" value="code"> 编程</label>
                                  <label><input type="checkbox" name="hobby" value="hack"> 网络安全</label>
                                  <label><input type="checkbox" name="hobby" value="read"> 阅读</label>
                                </p>
                            
                                <p>
                                  <label>学 历:</label>
                                  <select name="edu">
                                    <option value="">请选择学历</option>
                                    <option value="high">高中</option>
                                    <option value="college">大专</option>
                                    <option value="bachelor" selected>本科</option>
                                  </select>
                                </p>
                            
                                <p>
                                  <label>头 像:</label>
                                  <input type="file" name="avatar" accept="image/*" required>
                                </p>
                            
                                <p>
                                  <label>备 注:</label><br>
                                  <textarea name="note" rows="4" cols="40" placeholder="选填..."></textarea>
                                </p>
                            
                                <p>
                                  <input type="submit" value="立即注册">
                                  <input type="reset" value="清空">
                                </p>
                              </form>
                            </body>
                            </html>
                            

                            实验思考

                            1. method="POST" 改成 GET" 再提交一次,观察地址栏变化;这说明什么安全问题?
                            2. 文件上传区去掉 enctype="multipart/form-data" 后,后台会收到什么结果?为什么必须加这句?

                            三、HTML5 新增元素:更语义化与更丰富的功能

                            HTML5 是 HTML 的第五个版本,在原有基础上新增了"语义化结构元素"和"增强型表单元素",不仅让代码更易读、维护,也提升了网页的交互体验与安全性(部分新增元素自带基础验证功能)。

                            3.1 HTML5 新增语义化结构元素

                            传统 HTML 用大量

                            标签划分页面结构(如头部、导航、主体、侧边栏),但
                            无语义性,不利于浏览器解析和搜索引擎优化(SEO)。HTML5 新增的语义化元素,通过标签名直接体现其功能,让代码更具可读性。

                            核心新增结构元素表

                            元素标签 语义与作用 适用场景 代码示例
                            页面或区域的"头部",通常包含标题、Logo、导航栏等 网页顶部、文章头部、板块头部

                            网络安全学习平台

                            "导航栏"容器,专门用于存放页面导航链接(如首页、课程、论坛等) 页面顶部、侧边栏的导航区域
                            页面的"主要内容区域",一个页面只能有一个
                            ,包含与页面主题相关的内容
                            网页的核心内容(如文章正文、课程列表)
                            HTML基础教程
                            表单安全知识
                            独立的"文章内容块",可单独存在(如博客文章、新闻、课程卡片) 博客列表、新闻列表、课程卡片

                            XSS 攻击原理与防御

                            XSS 攻击是指通过注入恶意脚本...

                            作者:安全讲师
                            页面中的"功能区块",用于划分不同主题的内容(如章节、模块) 文章的章节、页面的功能模块(如"学习目标""实验步骤")

                            学习目标

                            • 掌握HTML5语义化元素
                            • 理解表单安全风险
                            "侧边栏"或"辅助内容区",包含与主要内容相关的补充信息(如作者简介、目录) 页面右侧的作者信息、文章目录
                            页面或区域的"底部",通常包含版权信息、联系方式、备案号等 网页底部、文章底部、板块底部

                            © 2024 网络安全学习平台 版权所有

                            示例代码

                            html5.html

                            <!DOCTYPE html>
                            <html lang="zh-CN">
                            <head>
                              <meta charset="UTF-8">
                              <title>HTML5 语义化最简示例</title>
                              <style>
                                body{margin:0;font-family:Arial;background:#f5f5f5}
                                header,nav,main,footer{padding:15px;background:#fff;margin:10px;border-radius:5px}
                                nav a{margin-right:10px}
                              </style>
                            </head>
                            <body>
                              <header>
                                <h1>网络安全学习平台</h1>
                              </header>
                            
                              <nav>
                                <a href="/">首页</a>
                                <a href="/course">课程</a>
                                <a href="/forum">论坛</a>
                              </nav>
                            
                              <main>
                                <section>
                                  <h2>今日课程</h2>
                                  <article>
                                    <h3>XSS 攻击原理与防御</h3>
                                    <p>通过注入恶意脚本窃取用户数据……</p>
                                    <footer>作者:安全讲师</footer>
                                  </article>
                                </section>
                              </main>
                            
                              <aside>
                                <h4>作者简介</h4>
                                <p>10 年 Web 安全从业经验</p>
                              </aside>
                            
                              <footer>
                                <p>© 2024 网络安全学习平台 版权所有</p>
                              </footer>
                            </body>
                            </html>
                            

                            语义化结构的优势与安全关联

                            1. 优势

                              • 代码更易读:他人看标签名就知道对应区域的功能(如 就是导航);
                              • 利于 SEO:搜索引擎能通过语义化标签快速识别页面核心内容,提升排名;
                              • 适配性更好:屏幕阅读器(无障碍设备)能通过语义化标签为视障用户准确描述页面结构;
                            2. 安全关联:语义化结构让页面逻辑更清晰,后续用 JavaScript 操作 DOM(如获取导航栏、修改主要内容)时更精准,减少因误操作

                              导致的功能异常或安全漏洞。

                            3.2 HTML5 新增表单元素与属性

                            HTML5 对表单进行了大幅增强,新增了"专用输入类型"和"实用属性",不仅减少了 JavaScript 代码量(部分功能自带验证),也提升了用户体验与数据安全性(自带格式验证,减少非法数据提交)。

                            3.2.1 新增表单输入类型

                            这些输入类型本质还是 标签,但通过特定 type 值实现专用功能(如日期选择、邮箱验证),浏览器会自动适配输入格式并提供基础验证。

                            新增 type 功能描述 代码示例 安全与体验优势
                            email 邮箱输入框,自带邮箱格式验证(必须包含 @ 和域名,如 test@example.com 减少非法邮箱提交,无需额外写 JavaScript 验证;移动端会弹出"邮箱专用键盘"(带 @ 键)
                            tel 电话输入框,不自带格式验证(因各国手机号格式不同),但支持自定义验证 移动端会弹出"数字键盘",提升输入效率;配合 pattern 属性可实现手机号格式验证
                            url URL 输入框,自带网址格式验证(必须包含 http://https:// 防止无效 URL 提交,减少后端验证压力
                            date 日期选择器,浏览器会弹出日历控件,无需手写日期 避免日期格式混乱(如"2024/01/01"和"2024-01-01");min/max 限制可选日期范围
                            time 时间选择器,弹出时间控件(小时:分钟) 统一时间格式,避免"8:00"和"08:00"的差异
                            number 数字输入框,只允许输入数字、小数点和正负号,自带增减按钮 限制输入内容为数字,min/max 限制范围,step 控制增减幅度(如 step="2" 表示每次加 2)
                            search 搜索输入框,自带"清空按钮"(输入内容后显示 ×),语义上表示搜索功能 提升搜索体验,点击 × 可快速清空输入内容;部分浏览器会对搜索结果进行优化

                            3.2.2 新增表单属性

                            这些属性可用于

                            等标签,增强表单功能与安全性。

                            新增属性 作用与用法 适用标签 安全与体验优势
                            placeholder 输入框的"提示文字",输入内容后自动消失(无需用 JavaScript 实现) 明确告知用户输入格式(如"请输入 11 位手机号"),减少输入错误;避免用默认值(如默认值"test@example.com"可能被误提交)
                            required 标记输入框为"必填项",未输入时无法提交表单,浏览器自带提示 前端快速拦截空数据提交,减少后端无效请求;提示文案由浏览器自动生成,适配不同语言环境
                            pattern 自定义"正则表达式验证规则",输入内容需匹配正则才能提交 (除 type="file" 外) 灵活实现复杂验证(如手机号、身份证号、密码强度);示例:手机号验证 pattern="1[3-9]\d{9}"
                            min/max 限制数字、日期、时间类型输入框的"最小值"和"最大值" 防止超出合理范围的数据提交(如年龄不能小于 18 岁、日期不能是未来时间)
                            step 控制数字、日期、时间输入框的"增减幅度"(点击控件自带的 ± 按钮时生效) 统一输入精度(如年龄 step="1"、价格 step="0.01")
                            autofocus 页面加载完成后,自动将光标聚焦到该输入框(一个页面建议只设置一个) 提升登录、搜索等高频场景的体验(如登录页自动聚焦用户名输入框)
                            autocomplete 控制输入框是否"自动补全"(浏览器记住历史输入内容,默认开启)
                            敏感输入框(如密码、银行卡号)可设为 autocomplete="off",防止浏览器记住敏感数据;示例:

                            最简示例

                            Html5-demo.html

                            <!DOCTYPE html>
                            <html lang="zh-CN">
                            <head>
                              <meta charset="UTF-8">
                              <title>HTML5 新增表单小体验</title>
                            </head>
                            <body>
                              <h1>快速注册</h1>
                              <form action="#" method="POST">
                                <!-- 1. 邮箱:自带 @ 校验 + 移动端邮箱键盘 -->
                                <p>
                                  <label>邮箱:</label>
                                  <input type="email" name="user_email" placeholder="name@example.com" required>
                                </p>
                            
                                <!-- 2. 手机号:数字键盘 + 正则校验 -->
                                <p>
                                  <label>手机:</label>
                                  <input type="tel" name="user_phone" pattern="1[3-9]\d{9}" placeholder="11位手机号" required>
                                </p>
                            
                                <!-- 3. 日期:自带日历控件 + 范围限制 -->
                                <p>
                                  <label>生日:</label>
                                  <input type="date" name="user_birth" min="1900-01-01" max="2024-12-31" required>
                                </p>
                            
                                <!-- 4. 提交 -->
                                <p>
                                  <input type="submit" value="立即注册">
                                </p>
                              </form>
                            </body>
                            </html>
                            

                            基础实验 6:给实验5加装 HTML5“新装备”


                            实验目标

                            1. 会用 HTML5 新增输入类型 emailteldate 及属性 patternmin/maxrequired
                            2. 感受浏览器自带验证:免 JavaScript 即可完成格式检查、数字键盘、日期控件
                            3. 理解“敏感数据用 POST + 新属性”带来的体验与安全提升

                            实验要求

                            1. 文件准备

                              • 复制原 test5.html → 改名 test6.html
                            2. 升级点(共 4 处,其余保持不动) ① 把“用户名”输入框的 type 改为 emailplaceholder 换成 "name@example.com"新增一行“手机”输入框:

                              • type="tel"name="phone"

                              • pattern="1[3-9]\d{9}"(11 位手机号规则)

                              • placeholder="11位手机号"required

                                新增一行“生日”输入框:

                              • type="date"name="birth"

                              • min="1900-01-01" max="2024-12-31"required

                            3. 验证效果

                              • 邮箱输错 → 浏览器自动提示格式错误
                              • 手机输非 11 位数字 → 提交被拦截
                              • 日期点击 → 弹出原生日历,且超出 1900-2024 范围不可选
                              • 两重置按钮都能正常清空表单

                            results matching ""

                              No results matching ""