1.1 HTML 基础
1.1.1 什么是 HTML
HTML (Hyper Text Markup Language), 超文本标记语言.
超文本:比文本要强大,通过链接和交互方式来组织和呈现信息的文本形式,不仅仅有文本,还可能包含图片,音频,或者自己已经审阅过它的学者所加的评注、补充或脚注等等.
标记语言:由标签构成的语言HTML 的标签都是提前定义好的,使用不同的标签,表示不同的内容.类似飞书文档,Word 文档

html
<h1>我是⼀级标题</h1>
<h2>我是⼆级标题</h2>
<h3>我是三级标题</h3>
经过浏览器解析后的效果如下

1.1.2 认识 HTML
标签HTML 代码是由 "标签" 构成的。
形如:
html
<h3>我是三级标题</h3>
- 标签名 (body) 放到 <> 中
- 大部分标签成对出现.<h1> 为开始标签,</h2> 为结束标签.
- 少数标签只有开始标签,称为 "单标签".
- 开始标签和结束标签之间,写的是标签的内容.
- 开始标签中可能会带有 "属性".id 属性相当于是给这个标签设置了一个唯一的标识符 (身份证号码).1 <h3 id="myId">我是三级标题</h3>
1.1.3 HTML 文件基本结构
html
<html>
<head>
<title>第一个页面</title>
</head>
<body> hello world </body>
</html>
- html 标签是整个 html 文件的根标签 (最顶层标签)
- head 标签中写页面的属性.
- body 标签中写的是页面上显示的内容
- title 标签中写的是页面的标题.
1.1.4 标签层次结构
- 父子关系
- 兄弟关系
html
<html>
<head>
<title>第一个页面</title>
</head>
<body>
hello world
</body>
</html>
其中:
- head 和 body 是 html 的子标签 (html 就是 head 和 body 的父标签)
- title 是 head 的子标签. head 是 title 的父标签.
- head 和 body 之间是兄弟关系.
可以使用 chrome 的开发者工具查看页面的结构.

标签之间的结构关系,构成了⼀个DOM树
DOM 是DocumentObjectMode(文档对象模型)的缩写.

1.2 HTML 快速入门
1.2.1 开发工具
HTML 可以使用系统自带的记事本來编写,但是非常不方便,我们课程中使用前端专业的开发工具:Visual Studio Code
Visual Studio Code(简称 "VS Code")是 Microsoft 在 2015 年 4 月 30 日 Build 开发者大会上宣布的一款跨平台源代码编辑器,可以运行在 Windows,macOS 和 Linux 上。它具有对 JavaScript, TypeScript 和 Node.js 的内置支持,并具有丰富的其他语言 (例如 C++, C#, Java, Python, PHP, Go).
- 官网: https://code.visualstudio.com进行下载,安装即可.
1.2.2 快速开发
在 VS Code 中创建文件 xxx.html, 直接输入 !, 按 Enter 或 tab 键,此时能自动生成代码的主体框架.
html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
</body>
</html>
细节解释:(了解即可,不必深究)
<!DOCTYPE html>称为 DTD (文档类型定义), 描述当前的文件是一个 HTML5 的文件.<html lang="en">其中 lang 属性表示当前页面是一个 "英语页面", 这里暂时不用管.(有些浏览器会根据此处的声明提示是否进行自动翻译).<meta charset="UTF-8">描述页面的字符编码方式。没有这一行可能会导致中文乱码.<meta name="viewport" content="width=device-width, initial-scale=1.0">name="viewport"其中 viewport 指的是设备的屏幕上能用来显示我们的网页的那一块区域.content="width=device-width, initial-scale=1.0"在设置可视区和设备宽度等宽,并设置初始缩放为不缩放.(这个属性对于移动端开发更重要一些).
在<body></body>标签中,任意书写文字,按 Ctrl+s 保存文件,通过浏览器访问即可。如:
html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
第一个Document</title>
</</tody>
</html>
浏览器运行结果如下:[浏览器界面截图:
1.3 HTML 常见标签
1.3.1 标题标签 h1-h6
有六个,从 h1-h6. 数字越大,则字体越小.
html
<h1>hello</h1>
<h2>hello</h2>
<h3>hello</h3>
<h4>hello</h4>
<h5>hello</h5>
<h6>hello</h6>
1.3.2 段落标签: p
在 HTML 中,段落,换行符,空格都会失效,如果需要分成段落,需要使用专门的标签
- p 标签表示一个段落.
html
<p>这是一个段落</p>
html
<p>这是一个段落</p>
<p>这是一个段落</p>
注意:
- p 标签描述的段落,前面没有缩进.(未来 CSS 会学)
- 自动根据浏览器宽度来决定排版.
- html 内容首尾处的换行,空格均无效.
- 在 html 中文字之间输入的多个空格只相当于一个空格.
1.3.3 换行标签:br
想要完成换行的话,也可以通过<br/>标签来实现.br 是 break 的缩写,表示换行.
- br 是一个单标签 (不需要结束标签)
- br 标签不像 p 标签那样带有一个很大的空隙.
<br/>是规范写法,不建议写成<br>
html
这是一个br标签<br/>
这是一个br标签<br/>
这是一个br标签<br/>
展示结果:


1.3.4 图片标签:img
img 标签必须带有 src 属性,表示图片的路径。
html
<img src="rose.jpg">
此时要把 rose.jpg 这个图片文件放到和 html 中的同级目录中。
img 标签的其他属性
- width/height: 控制宽度高度。高度和宽度一般改一个就行,另外一个会等比例缩放。否则就会图片失衡.
- border: 边框,参数是宽度的像素。但是一般使用 CSS 来设定.
html
<img src="rose.jpg" width="500px" height="800px" border="5px">
注意:
- 属性可以有多个,不能写到标签之前
- 属性之间用空格分割,可以是多个空格,也可以是换行.
- 属性之间不分先后顺序
- 属性使用 "键值对" 的格式来表示.
关于目录结构:对于一个复杂的网站,页面资源很多,这种情况可以使用目录把这些文件整理好.
- 相对路径:以 html 所在位置为基准,找到图片的位置.
- 同级路径:直接写文件名即可 (或者,/)
- 下一级路径:image/1.jpg
- 上一级路径:../image/1.jpg
- 绝对路径:一个完整的磁盘路径,或者网络路径。例如
- 磁盘路径 D:/rose.jpg(最好使用 /, 不要使用 \)
- 网络路径https://img2.baidu.com/it/u=3359649605,3626874592&fm=253&fmt=auto&app=138&f=JPEG?w=500h&h=752
1.3.5 超链接: a
超链接标签(<a>)的核心属性:
href:必填属性,指定点击后跳转的目标页面地址。target:控制打开方式,默认值_self(当前标签页打开),设为_blank则在新标签页打开。
链接的常见形式
-
外部链接引用其他网站的地址,需填写完整网络路径:
html<a href="http://www.baidu.com">百度</a> -
内部链接用于网站内部页面跳转,使用相对路径(需确保文件在同一目录):
-
示例:在同一目录下创建
1.html和2.html,实现互相跳转:html<!-- 1.html --> 我是 1.html <a href="2.html">点我跳转到 2.html</a> <!-- 2.html --> 我是 2.html <a href="1.html">点我跳转到 1.html</a>
-
-
空链接 使用
#作为href的占位符(点击后不跳转,仅表示链接样式):html<a href="#">空链接</a>
超链接是 HTML 中实现页面跳转的核心标签,常用于导航栏、内容关联跳转等场景,通过不同的href形式可适配外部、内部及临时占位的需求。
1.4 表格标签
HTML 表格由多个标签协作构成,核心结构为:table**(整个表格)包含tr(行),tr包含td(单元格);还可通过thead(表头区域)、tbody(主体区域)划分表格模块。**

表格标签的属性(需写在table标签中)
表格可通过属性设置样式(实际开发中更常用 CSS),常用属性包括:
| 属性名 | 作用描述 |
|---|---|
align |
表格相对于周围元素的对齐方式(如align="center"表示居中,不控制内部元素对齐) |
border |
表格边框宽度,1表示有边框(数值越大边框越粗),空值表示无边框 |
cellpadding |
单元格内容与边框的距离,默认 1 像素 |
cellspacing |
单元格之间的间距,默认 2 像素 |
width/height |
表格的宽度 / 高度 |
示例代码
html
<table align="center" border="1" cellpadding="20" cellspacing="0" width="500" height="500">
<tr>
<td>姓名</td>
<td>性别</td>
<td>年龄</td>
</tr>
<tr>
<td>张三</td>
<td>男</td>
<td>10</td>
</tr>
<tr>
<td>李四</td>
<td>女</td>
<td>11</td>
</tr>
</table>
原来表格:
html
<body>
<!-- 表格标签 -->
<table border="1px" cellspacing="0" cellpadding="0px" align="center">
<tr>
<td>aaa</td>
<td>bbb</td>
<td>111</td>
</tr>
<tr>
<td>ccc</td>
<td>ddd</td>
<td>ddd</td>
</tr>
<tr>
<td>eee</td>
<td>ffff</td>
<td>ffff</td>
</tr>
</table>
</body>

合并单元格:
html
<body>
<!-- 表格标签 -->
<table border="1px" cellspacing="0" cellpadding="0px" align="center">
<tr>
<td>aaa</td>
<td colspan="2">bbb</td>
<!-- <td>111</td> -->
</tr>
<tr>
<td>ccc</td>
<td>ddd</td>
<td rowspan="2">222</td>
</tr>
<tr>
<td>eee</td>
<td>ffff</td>
<!-- <td>333</td> -->
</tr>
</table>
</body>

1.5 表单相关标签
1.5.1 form 标签
form标签用于定义表单区域,负责指定数据的提交方式与目标页面,语法如下:
html
<form action="test.html">
... [form的内容]
</form>
其核心作用是包裹表单控件,后续需结合后端代码实现数据提交逻辑。
| 属性 | 作用说明 |
|---|---|
action |
指定表单数据提交的目标地址 (可以是本地 HTML 文件、后端接口地址等),这里是提交到同目录下的demo1.html |
method |
指定表单的提交方式 ,可选值为get(默认)或post,这里使用get方式 |
get与post提交方式的区别
| 提交方式 | 数据传递位置 | 数据大小限制 | 安全性 | 适用场景 |
|---|---|---|---|---|
get |
拼接到 URL 地址后 | 一般限制 2KB | 低(数据可见) | 简单查询、非敏感数据提交 |
post |
放在 HTTP 请求体中 | 无明确限制 | 高(数据隐藏) | 登录、注册、敏感数据提交 |
html
<form action="demo1.html" method="get">
姓名:<input type="text" name="" id="" placeholder="请输入姓名"><br/>
密码:<input type="password" name="" id=""><br/>
性别:
<input type="radio" name="gender" id="male">
<label for="male">男</label>
<input type="radio" name="gender" id="female">
<label for="female">女</label> <br/>
兴趣:
<input type="checkbox" name="chec" id="ball11">
<label for="ball11">排球</label>
<input type="checkbox" name="chec" id=""> 篮球
<input type="checkbox" name="chec" id=""> 乒乓球
<input type="checkbox" name="chec" id=""> 羽毛球 <br/>
<!-- 注释了普通按钮和button标签,改用submit类型按钮 -->
<!-- <input type="button" value="注册"> -->
<!-- <button>注册</button> -->
<input type="submit" value="注册">
</form>

- 1.gender是 on,是因为没有写名字,他只知道值,但是不知道这个值对应的属性是什么
- 2.性别这里他知道名字,因为他们男女的input一样,但是不知道对应的值是多少 所以是on,解决办法是再后面写一个value
html
<body>
<!-- 表单标签 -->
<form action="demo1.html" method="get">
姓名:<input type="text" name="userName" id="" placeholder="请输入姓名"><br/>
密码:<input type="password" name="password" id=""><br/>
性别:
<input type="radio" name="gender" id="male" value="0">
<label for="male">男</label>
<input type="radio" name="gender" id="female" value="1">
<label for="female">女</label> <br/>
兴趣:
<input type="checkbox" name="chec" id="ball11" value="1">
<label for="ball11">排球</label>
<input type="checkbox" name="chec" id="" value="2"> 篮球
<input type="checkbox" name="chec" id="" value="3"> 乒乓球
<input type="checkbox" name="chec" id="" value="4"> 羽毛球 <br/>
<!-- 注释了普通按钮和button标签,使用submit按钮提交 -->
<!-- <input type="button" value="注册"> -->
<!-- <button>注册</button> -->
<input type="submit" value="注册">
</form>
</body>
优化正常命名:
html
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>表单提交示例</title>
</head>
<body>
<!-- 表单容器:提交到demo1.html,使用get方式 -->
<form action="demo1.html" method="get">
<!-- 文本输入框:姓名 -->
姓名:<input type="text" name="username" placeholder="请输入姓名"><br><br>
<!-- 密码输入框 -->
密码:<input type="password" name="pwd" placeholder="请输入密码"><br><br>
<!-- 单选框:性别(name统一实现互斥) -->
性别:
<input type="radio" name="gender" id="male" value="male">
<label for="male">男</label>
<input type="radio" name="gender" id="female" value="female">
<label for="female">女</label><br><br>
<!-- 复选框:兴趣(name统一便于后端接收数组) -->
兴趣:
<input type="checkbox" name="hobby" id="volleyball" value="volleyball">
<label for="volleyball">排球</label>
<input type="checkbox" name="hobby" id="basketball" value="basketball">
<label for="basketball">篮球</label>
<input type="checkbox" name="hobby" id="pingpong" value="pingpong">
<label for="pingpong">乒乓球</label><br><br>
<!-- 提交按钮:点击后触发表单提交 -->
<input type="submit" value="提交">
<!-- 重置按钮:清空所有表单内容 -->
<input type="reset" value="重置">
</form>
</body>
</html>
html
demo1.html?username=张三&pwd=123456&gender=male&hobby=volleyball&hobby=basketball
1.5.2 input 标签
input是表单的核心控件标签,可实现单行文本、按钮、单选框等多种交互组件,关键属性包括:
type(必填):决定控件类型,常见取值有button、checkbox、text、file、password、radio等;name:为控件命名,单选框需同名才能实现 "多选一";value:控件的默认值;checked:用于单选 / 复选框,设置默认选中状态。
常用 input 类型示例
1.文本框用于输入单行文本:
html
<!-- 表单标签 -->
姓名: <input type="text" name="" id=""><br/>
密码: <input type="password" name="" id=""><br/>
性别: <input type="radio" name="gender" id="male"> <label for="male">男</label>
<input type="radio" name="gender" id="female"> <label for="female">女</label>

- 性别单选框通过统一的
name="gender"实现互斥选择; - 使用
<label>标签并通过for属性关联单选框的id,点击 "男 / 女" 文字即可选中对应单选框,提升了操作便捷性。
| 类型 | 核心特点 | 关键属性要求 | 适用场景 |
|---|---|---|---|
| 单选框(radio) | 同一组内只能选一个 | 必须设置相同的 name 属性 | 二选一 / 多选一的选项(如性别) |
| 复选框(checkbox) | 同一组内可多选 | 建议设置相同的 name 属性 | 多选项(如兴趣、爱好) |
html
<!-- 表单标签 -->
<!-- 性别:单选框(name统一为gender实现互斥选择) -->
性别:
<input type="radio" name="gender" id="male">
<label for="male">男</label>
<input type="radio" name="gender" id="female">
<label for="female">女</label> <br/>
<!-- 兴趣:复选框(name统一为chec便于后端接收多选结果) -->
兴趣:
<input type="checkbox" name="chec" id="ball11">
<label for="ball11">排球</label>
<input type="checkbox" name="chec" id="ball22">
<label for="ball22">篮球</label>
<input type="checkbox" name="chec" id="ball33">
<label for="ball33">乒乓球</label>
<input type="checkbox" name="chec" id="ball44">
<label for="ball44">羽毛球</label>

2.button
html
<button>注册</button>
html
<input type="button" value="注册">

html
<!-- 表单标签:action指定提交地址,method指定提交方式为get -->
<form action="demo1.html" method="get">
姓名:<input type="text" name="" id="" placeholder="请输入姓名"><br/>
密码:<input type="password" name="" id=""><br/>
性别:
<input type="radio" name="gender" id="male">
<label for="male">男</label>
<input type="radio" name="gender" id="female">
<label for="female">女</label> <br/>
兴趣:
<input type="checkbox" name="chec" id="ball11">
<label for="ball11">排球</label>
<input type="checkbox" name="chec" id=""> 篮球
<input type="checkbox" name="chec" id=""> 乒乓球
<input type="checkbox" name="chec" id=""> 羽毛球 <br/>
<!-- 注释了原普通按钮,改用<button>标签作为提交按钮 -->
<!-- <input type="button" value="注册"> -->
<button>注册</button>
</form>
这个复选框的特点是:通过checked属性默认选中了 "羽毛球" 选项,name="chec"用于后端接收多选结果,value="4"是提交的对应数据。
html
<input type="checkbox" name="chec" id="" value="4" checked> 羽毛球 <br/>

文本框
html
<input type="text">
密码框
html
<input type="password">
单选框
html
性别:
<input type="radio" name="sex">男
<input type="radio" name="sex" checked="checked">女
注意 :单选框之间必须具备相同的name属性,才能实现 "多选一" 效果。
复选框
html
爱好:
<input type="checkbox">吃饭 <input type="checkbox">睡觉 <input type="checkbox">打游戏
普通按钮
html
<input type="button" value="我是个按钮">
当前点击了没有反应,需要搭配 JS 使用 (后面会重点研究)。
html
<input type="button" value="我是个按钮" onclick="alert('hello')">
提交按钮
html
<form action="test.html">
<input type="text" name="username">
<input type="submit" value="提交">
</form>
提交按钮必须放到form标签内。点击后就会尝试给服务器发送请求
1.5.3 select 标签(下拉菜单)
select用于创建下拉选择菜单,option定义菜单项,通过selected="selected"设置默认选中项:
html
学历:<select name="sel">
<option value="1">小学</option>
<option value="2">初中</option>
<option value="3">高中</option>
<option value="4" selected="selected">高中及以上</option>
</select>

1.5.4 textarea 标签(文本域)
textarea用于多行文本输入,rows(行数)、cols(列数)为基础尺寸属性(实际开发常用 CSS 调整样式),标签内的内容为默认文本(空格会影响显示):
html
<textarea rows="3" cols="50">
</textarea>

1.6 无语义标签:div & span
这两个标签本身无实际语义,仅作为 "容器" 用于网页布局:
- div:division 的缩写,意为 "分割",是块级元素(独占一行),常用于大区域布局;
- span:意为 "跨度",是行内元素(不独占一行),常用于小范围内容包裹。
示例:
html
<div>
<span>咬人猫</span>
<span>咬人猫</span>
<span>咬人猫</span>
</div>
<div>
<span>兔总裁</span>
<span>兔总裁</span>
<span>兔总裁</span>
</div>
<div>
<span>阿叶君</span>
<span>阿叶君</span>
<span>阿叶君</span>
</div>
1.7 序列
序列是编程和标记语言中用于组织一组相关元素的结构,常见的有有序序列 和无序序列 ,在 HTML 中最具代表性的是有序列表(<ol>)和无序列表(<ul>),以下是详细说明:
1.7.1 有序序列(有序列表)
有序序列指的是元素的排列存在明确的顺序(如数字、字母、罗马数字等),顺序的改变会影响语义。在 HTML 中,使用<ol>(Ordered List)标签定义有序列表,列表项由<li>(List Item)标签包裹。
核心特性
- 列表项默认以阿拉伯数字(1、2、3...)进行编号
- 可通过
type属性修改编号类型,支持数字(1)、大写字母(A)、小写字母(a)、大写罗马数字(I)、小写罗马数字(i) - 可通过
start属性指定编号的起始值(仅支持数字,会自动对应到所选类型)
代码示例
html
<!-- 默认数字编号的有序列表 -->
<ol>
<li>第一步:打开编辑器</li>
<li>第二步:编写代码</li>
<li>第三步:运行测试</li>
</ol>
<!-- 大写字母编号,从3开始(对应C) -->
<ol type="A" start="3">
<li>章节C</li>
<li>章节D</li>
<li>章节E</li>
</ol>
<!-- 小写罗马数字编号 -->
<ol type="i">
<li>第一个要点</li>
<li>第二个要点</li>
</ol>
1.7.2 无序序列(无序列表)
无序序列指的是元素的排列没有固定顺序,仅表示元素属于同一组,顺序改变不影响语义。在 HTML 中,使用<ul>(Unordered List)标签定义无序列表,列表项同样由<li>标签包裹。
核心特性
- 列表项默认以实心圆点(●)作为项目符号
- 可通过
type属性修改符号类型,支持实心圆点(disc,默认)、空心圆圈(circle)、实心方块(square) - 现代开发中,更多使用 CSS 替代
type属性来定制符号样式(如取消符号、使用图标等)
代码示例
html
<!-- 默认实心圆点的无序列表 -->
<ul>
<li>苹果</li>
<li>香蕉</li>
<li>橙子</li>
</ul>
<!-- 空心圆圈符号的无序列表 -->
<ul type="circle">
<li>篮球</li>
<li>足球</li>
<li>排球</li>
</ul>
<!-- 实心方块符号的无序列表 -->
<ul type="square">
<li>红色</li>
<li>绿色</li>
<li>蓝色</li>
</ul>
<!-- CSS定制:取消项目符号 -->
<ul style="list-style: none;">
<li>首页</li>
<li>关于我们</li>
<li>联系我们</li>
</ul>
拓展:嵌套序列
有序序列和无序序列可以互相嵌套,形成层级结构,例如:
html
<ul>
<li>水果
<ol>
<li>苹果</li>
<li>香蕉</li>
</ol>
</li>
<li>运动
<ul type="circle">
<li>篮球</li>
<li>足球</li>
</ul>
</li>
</ul>
1.7.3 自定义列表
自定义列表是 HTML 中第三种重要的序列(列表)类型,它并非简单的有序 / 无序项排列,而是用于展示术语 - 解释 、标题 - 内容 这类关联型的结构,由<dl>(Definition List)、<dt>(Definition Term,定义术语 / 标题)和<dd>(Definition Description,定义描述 / 内容)三个标签配合实现。
核心特性
<dl>是自定义列表的容器,包裹所有<dt>和<dd>标签;- 一个
<dl>中可以包含多个<dt>,每个<dt>可以对应一个或多个<dd>; - 默认样式下,
<dd>会有缩进效果(通常是 40px 左右的左边距),可通过 CSS 修改; - 常用于展示商品属性、文档说明、网站底部导航等场景。
代码示例
基础用法(单术语单描述)
html
<dl>
<dt>HTML</dt>
<dd>超文本标记语言,用于构建网页的结构。</dd>
<dt>CSS</dt>
<dd>层叠样式表,用于美化网页的样式。</dd>
</dl>
进阶用法
html
<!-- 单术语对应多个描述 -->
<dl>
<dt>JavaScript</dt>
<dd>一种脚本语言,用于实现网页的交互效果。</dd>
<dd>可在浏览器端运行,也可通过Node.js在服务器端运行。</dd>
</dl>
<!-- 多术语对应多描述(嵌套/并列) -->
<dl>
<dt>前端三大核心技术</dt>
<dd>
<dl>
<dt>HTML</dt>
<dd>负责页面结构</dd>
<dt>CSS</dt>
<dd>负责页面样式</dd>
<dt>JS</dt>
<dd>负责页面交互</dd>
</dl>
</dd>
<dt>前端框架</dt>
<dd>React</dd>
<dd>Vue</dd>
<dd>Angular</dd>
</dl>
1.7 综合练习:用户注册
用于实现用户注册界面(具体内容未完全展示)。
这些标签的核心作用:select和textarea补充了表单的交互类型,div和span则是网页布局的基础容器,是前端页面结构搭建的常用工具。

用户注册页面实现说明
该页面通过表格布局 +表单控件搭建,核心实现逻辑如下:
实现思路
- 布局方式 :用
<table>做整体结构排版,通过<tr>(行)+<td>(单元格)排列表单项; - 交互控件 :用
<input type="text">实现输入框,通过placeholder设置提示文字; - 辅助元素 :用
<div>包裹按钮与链接,<a>实现 "登录" 跳转。
代码示例
html
<h1>用户注册</h1>
<table>
<tr>
<td>用户名</td>
<td><input type="text" placeholder="请输入用户名"></td>
</tr>
<tr>
<td>手机号</td>
<td><input type="text" placeholder="请输入手机号"></td>
</tr>
<tr>
<td>密码</td>
<td><input type="text" placeholder="请输入密码"></td>
</tr>
</table>
<div>
<input type="button" value="注册">
<span>已有账号?</span><a href="#">登录</a><br/>
</div>
功能说明
- 表格负责页面的整齐排版,让标签与输入框对应对齐;
placeholder用于提示用户输入内容(如 "请输入用户名");- "注册" 按钮为普通按钮(需搭配 JS 实现提交逻辑),"登录" 是空链接(需补充实际跳转地址)。