HTML入门

出于现在AI的发展越来越快,单纯的前后端已经不再被认可,前段时间尝试用AI写前后端代码,也就是市面上的全栈开发,发现前端代码看不懂,很多时候就类似于在用AI生成漫剧,也就是我们常说的"抽卡",所以笔者决定从今天开始学习前端,这篇是HTML入门教程。

1.HTML是什么?

首先,在入门HTML之前,我们需要先知道什么是HTML。

1. 它不是编程语言,而是"标记语言"

  • 编程语言(如 Python、Java)有逻辑判断、循环、计算功能,像"大脑"。

  • HTML 没有这些运算能力,它像一支"荧光笔"------通过标签 (如 <h1><p><img>)给文本内容"涂上不同的颜色"并贴上标签,告诉浏览器:"这是标题"、"这是段落"、"这是一张图片"。

2. 它是网页的"骨架"

如果把网页比作一个人:

  • HTML 是骨骼(决定哪里是头、哪里是手、哪里是脚)。

  • CSS 是皮肤和衣服(决定颜色、大小、间距,负责美观)。

  • JavaScript 是肌肉和动作(决定点击、滑动、弹窗等交互功能)。

没有 HTML,CSS 和 JS 就无处附着。

3. 它是怎么工作的?

浏览器的核心工作就是"读取"并"翻译" HTML 文件:

  1. 你写了一段代码:<h1>你好,世界</h1>

  2. 浏览器读到这个尖括号标签 ,就知道要把"你好,世界"这几个字加粗放大显示,并且语义上作为"一级标题"。

  3. 浏览器按从上到下的顺序"解析"代码,把页面渲染在屏幕上。

2.HTML的标准模板

HTML虽然作为一个标记语言,但是和JAVA、Python这些编程语言一样,也有所谓的"标准范式"。

最基本的"标准模板"代码如下:

html 复制代码
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>网页标题</title>
</head>
<body>
    <!-- 这里写所有显示在页面上的可见内容 -->
    你好,世界!
</body>
</html>

2.1. 第一层:文档声明(最顶上)

<!DOCTYPE html>

作用:这行必须写在最顶部,告诉浏览器:"请使用最新的 HTML5 标准来渲染这个页面"。如果不写,浏览器可能会进入"怪异兼容模式",导致页面排版错乱。

2.2. 第二层:头部(<head> 标签)------ 幕后工作者

这部分内容是不显示在页面上的,专门给浏览器和搜索引擎看的,负责配置"后台":

  • <meta charset="UTF-8"> :设置字符编码为国际通用标准,防止出现乱码(必须写)。

  • <meta name="viewport"...> :让页面在手机等移动设备上显示得舒服(适配移动端必须写)。

  • <title> :定义网页的标题,也就是浏览器标签页上显示的文字(必须写)。

2.3. 第三层:身体(<body> 标签)------ 台前演员

作用 :你在浏览器页面上能看到的所有内容 (文字、图片、按钮、视频、包括你刚问的 <hr><br> 标签)都必须 写在 <body></body> 之间。

其中在 <html> 标签里,<head><body> 是亲兄弟关系(平级) ,并且必须严格按照 headbody 的顺序写,绝对不能交叉嵌套。

3.前端开发工具:VSCode,HBuilder,小程序开发者工具

这三款工具正好覆盖了前端开发的三个不同维度通用代码编辑器专属框架IDE平台专属调试器 。它们不是"谁替代谁"的关系,在实际工作中,开发者经常把它们组合起来使用

3.1. VS Code(通用开发工具)

定位 :当下全球最流行的通用代码编辑器(微软出品)。

  • 优点:插件生态极其强大(几乎你能想到的功能都有插件)、完全免费、启动速度快、Git版本控制集成顺滑。无论是Vue、React还是Node.js后端,它都能完美胜任。JAVA开发也可以通过插件来进行开发。

  • 缺点:对于特定框架(如uni-app)的专属语法提示,需要自己花时间配置;调试手机真机时需要额外安装插件,稍显繁琐。

  • 适用场景主力开发工具。适合所有前端项目(Vue/React/Angular/原生JS)。

3.2. HBuilderX(专精利器)

定位 :国产厂商DCloud出品的轻量级IDE,专为Vue和uni-app(跨平台小程序)深度优化。

  • 优点"开箱即用" 。如果你做uni-app,它内置了完整的语法提示、代码块和Android/iOS真机调试基座,一键就能运行到手机。内置浏览器预览功能极其流畅。中文界面和帮助文档对新手非常友好。

  • 缺点:插件市场远不如VS Code丰富;如果你做React或纯后端开发,它并不擅长;且插件扩展性受限于官方生态。

  • 适用场景uni-app 开发首选,或纯Vue2/Vue3项目且不想折腾配置时的绝佳选择。

3.3. 小程序开发者工具(官方刚需)

定位 :微信/支付宝/抖音等官方推出的平台专属调试工具(以微信开发者工具为例)。

  • 优点 :集成了小程序独有的API模拟 (如登录、支付、位置)、真机预览 (生成二维码扫码看)、性能检测 (内存/CPU占用)和上传发布功能。你不装它,就无法在微信生态里调试和提交代码。

  • 缺点写代码的体验很差(语法提示迟钝、卡顿、字体UI老旧)。基于Chrome内核,占用内存较大。

  • 适用场景仅用来调试和发布。几乎没人拿它当主力编辑器。

这里根据日常需求挑选即可,不同工具之间没有绝对的好坏,满足你的开发需求即可。

4.VSCode中需要安装的插件

4.1.Chinese (Simplified) 中文语言包

界面汉化。装完后重启VS Code,菜单、设置栏全部变为简体中文,对新手消除英语恐惧非常友好。

4.2.HTML CSS Support

智能补全。在HTML中写 classid 时,它会自动弹出你在CSS文件里定义好的样式名称,避免手打拼写错误。

4.3.Auto Rename Tag

自动重命名标签。修改一对标签中的开始标签(如 <div>)时,它会自动同步修改对应的闭合标签(</div>),省去前后找的麻烦。

4.4.Live Server

热更新服务器。右键HTML文件启动后,它会开启一个本地端口,每次你保存代码(Ctrl+S),浏览器页面就会自动刷新显示最新效果,写样式时极其顺手。

5.VSCode一键创建HTML模板

在 VS Code 里实现"一键创建"极其简单,只需要两个步骤

5.1. 操作步骤

  • 第一步 :新建一个文件,必须 点击右下角将其保存为 .html 后缀(例如 index.html)------这一步是关键 ,否则代码无法生效。

  • 第二步 :在空白文件中输入 ! (英文感叹号),然后按下键盘上的 Tab (或 Enter 键)。

2. 瞬间生成的代码

按下后,VS Code 会自动补全出之前的标准 HTML 骨架

三个 !!!只生成文档类型声明 <!DOCTYPE html>不带任何其他标签。

6.如何直观的看到HMTL导致的前端样式改变?

右键html文件,通过我们前面安装的插件,动态刷新页面效果。

7.HTML的标签

HTML 标签数量众多(有 100 多个),但作为新手,我们只需要熟练掌握 20 个左右,就能搭建出 90% 的常见页面了。

首先,我们要理解,HTML的标签分为双标签和单标签,本质上就是看标签名里**有没有"斜杠 /"。**记住这个底层逻辑:

  • 双标签(绝大多数) :有开始<p>)和结束</p>),中间夹着内容。结束标签带斜杠。

  • 单标签(空元素)没有 内容可以包裹,自己一个人就能完成功能,所以不需要结束标签。常见的就是 <br><hr><img><input>

7.1. 骨架结构(页面地基)

每个页面都必须有的"三件套",你按 ! + Tab 生成的就是它们:

|-----------------|-------------------------------|
| <html>(双) | 整个网页的根容器。 |
| <head>(双) | 幕后配置区(标题、编码、引入CSS),内容不显示在页面上。 |
| <body>(双) | 台前展示区,所有可见内容都必须写在这里面。 |

7.2. 文本与排版(最常用)

|-------------------------|-----------------------------------|
| <h1> ~ <h6>(双) | 标题标签,数字越小字越大(<h1> 最大,一页建议只用一次)。 |
| <p>(双) | 段落标签,会自动撑开上下间距。 |
| <br>) | 强制换行。 |
| <hr>) | 水平分割线(你问过的)。 |
| <strong>(双) | 加粗文字(表强调)。 |
| <em>(双) | 斜体文字(表语气强调)。 |


7.3. 链接与图片(让网页"活"起来)

|---------------------|-----------------------------------------|
| <a>(双) | 超链接,核心属性是 href="网址"。 |
| <img>) | 插入图片,核心属性是 src="图片地址"alt="替代文字"。 |


7.4. 列表与容器(布局排版)

|-----------------|-----------------------------------------|
| <ul>(双) | 无序列表(前面带圆点),配合 <li>(双)使用。 |
| <ol>(双) | 有序列表(前面带数字),配合 <li>(双)使用。 |
| <div>(双) | 块级容器(独占一行),用来把一块内容包起来分组,最最最常用的布局盒子。 |
| <span>(双) | 行内容器(不换行),专门用来单独选中一段文字中的几个字改颜色或样式。 |

7.5. 表格与表单(数据交互)

|-----------------------|-----------------------------------------------------|
| <table>(双) | 表格,配合 <tr>(行)、<td>(单元格)、<th>(表头)。 |
| <form>(双) | 表单,用来提交数据(如登录框)。 |
| <input>) | 输入框,核心属性是 type="text"(文本)或 type="password"(密码)。 |
| <button>(双) | 按钮。 |

8.HTML的属性

HTML 属性(Attribute) 是放在开始标签 里用来修饰标签 的"额外配置信息"。我们可以把它理解为给标签添加的"参数",决定了标签"长什么样"或"跳到哪里去"。

核心语法格式:

<标签名 属性名="属性值">内容</标签名>

(注意:属性和标签名之间用空格隔开)

最常用的属性分成了三大类:

8.1. 全局属性(几乎所有标签都能用)

  • class:给标签起一个"类名"(可以重名),主要用于 CSS 批量设置样式或 JS 批量操作。

  • id :给标签起一个独一无二的"身份证号"(页面内必须唯一),用于精准定位某个特定元素。

  • style :直接在标签内部写 CSS 样式(比如 style="color:red;"),优先级最高(但不推荐大量使用,维护麻烦)。

  • title:鼠标悬停在标签上时,显示一个提示小浮窗。

8.2. 特有属性(特定标签的"刚需")

这些属性如果不写,标签就"废了"或没意义:

标签 核心属性 作用 例子
<a>(链接) href 指定点击后跳转的网址 <a href="https://baidu.com">去百度</a>
<img>(图片) srcalt src指定图片地址,alt是图片加载失败时的替代文字(SEO和盲人阅读器必备 <img src="photo.jpg" alt="风景照">
<input>(输入框) typeplaceholder type指定框类型(文本/密码/数字),placeholder显示灰色提示文字 <input type="password" placeholder="请输入密码">

8.3. 布尔属性(写了就生效,不写就失效)

这类属性不需要写值,只要在标签里出现名字就代表"开启":

  • disabled:禁用输入框或按钮(变灰点不了)。

  • checked:让单选框/复选框默认打钩。

  • readonly:输入框只能看不能改。

html 复制代码
<!-- 只要出现了 disabled,按钮就是灰色不可点的 -->
<button disabled>点我</button>

<!-- 只要出现了 checked,默认就是选中状态 -->
<input type="checkbox" checked>

9.HTML的区块

在 HTML 中,"区块"(Block)这个概念通常包含两层含义 。作为新手,我们需要先搞懂第一层(显示模式) ,再了解第二层(语义结构),这样页面布局的底子就打牢了。

9.1. 第一层:块级元素 vs 行内元素(显示模式)

这是 HTML 标签最底层的"基因"区别,决定了标签在页面上如何占位

对比维度 块级元素 行内元素
是否独占一行 (霸道总裁),不管内容多短,前后都会强制换行。 (小跟班),只占自身内容那么宽,和前后元素手拉手排排坐。
宽高设置 默认宽度撑满父容器,可以通过 CSS 设置宽高。 宽度由内容撑开,设置宽高无效
典型标签 <div><h1>~<h6><p><ul><hr> <span><a><strong><em><br><img>img特殊,它属于可替换行内元素,但能设置宽高)
举例 你在纸上写标题,写完必须换行再写下一段。 你在一句话里选中几个字加粗或加链接,这几个字不换行。

实战记忆口诀"块儿独占一行,行内手拉手"

最常见的是 <div>(块级大盒子)和 <span>(行内小标签),记住这俩就能举一反三。


9.2. 第二层:HTML5 语义化区块(页面骨架)

光有 div 虽然能布局,但全是白盒子,搜索引擎和盲人阅读器看不懂。HTML5 提供了带有含义的区块标签,用来搭建页面的"功能区域":

  • <header> :页面或区块的头部(通常放Logo、导航栏)。

  • <nav>导航链接区域。

  • <main> :页面的核心主体内容(一页只能有一个)。

  • <section> :页面中的独立章节(比如"热门文章"板块)。

  • <article>独立的、完整的内容块(比如一篇博客、一条新闻)。

  • <aside>侧边栏或补充信息(比如广告、相关推荐)。

  • <footer> :页面或区块的底部(通常放版权信息、联系方式)。

对比理解

  • <div> 搭布局 = 用空白乐高块搭房子(随便拼,但不知道哪是哪)。

  • <header><footer> 搭布局 = 用标了"门"、"窗户"、"屋顶"的乐高块搭房子(结构清晰,人见人懂)。


9.3. 核心避坑:区块怎么"排列"?(CSS 关键转折)

HTML 只负责"声明"谁是块、谁是行内,但真正的区块排列(比如左右两栏、上下居中)是由 CSS 决定的

  • 默认情况下,<div> 从上到下竖着排。

  • 如果你想让它横着排,需要用 CSS 的 display: flex;display: grid; 来改变它的排列行为。

9.4.全家桶代码实例:

html 复制代码
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>区块布局示例</title>
    <style>
        /* 给所有区块加个边框和间距,方便肉眼观察 */
        body { margin: 0; }
        header, nav, main, section, aside, footer {
            border: 2px solid #333;
            margin: 10px;
            padding: 15px;
            background-color: #f9f9f9;
        }
        /* 让导航里面的链接横着排(行内特征) */
        nav a { margin-right: 20px; }
    </style>
</head>
<body>
    <header>🟦 头部(Logo + 搜索框)</header>
    <nav>🟩 导航(首页 | 产品 | 关于)</nav>
    
    <main>
        <section>🟨 章节1:最新活动</section>
        <section>🟨 章节2:热门商品</section>
        <aside>🟧 侧边栏:今日推荐</aside>
    </main>
    
    <footer>⬛ 底部(版权信息)</footer>
</body>
</html>

10.表格

HTML 中的表格(<table>)是用来展示结构化数据 的利器,比如学生成绩单、财务报表、价格对比表等。它像一张严谨的 Excel 表格,由组成。

要彻底搞懂表格,只需记住它的三层嵌套结构(从外到内):

<table> (表格) ➡️ <tr> (行) ➡️ <td> (单元格)


10.1. 表格的"三大核心标签"

这是搭建任何表格的万能公式:

标签 中文俗称 作用 特点
<table> 表格容器 把整个表格包起来。 最外层的大框。
<tr> Table Row(行) 定义表格中的一行 有多少组 <tr>,表格就有多少行。
<td> Table Data(单元格) 定义行里面的一个格子(数据)。 放在 <tr> 里面,有多少个 <td>,这一行就有多少列。
<th> Table Header(表头) 特殊的单元格,用来放列标题 里面的文字默认会加粗并居中(语义上代表"标题")。

10.2. 极简示例:一个 2 行 3 列的表格

html 复制代码
<table border="1">  <!-- border="1" 只是为了显示边框方便学习,实际开发用CSS -->
    <!-- 第1行(表头行) -->
    <tr>
        <th>姓名</th>
        <th>语文</th>
        <th>数学</th>
    </tr>
    <!-- 第2行(数据行) -->
    <tr>
        <td>小明</td>
        <td>90</td>
        <td>95</td>
    </tr>
</table>

效果:第一行是加粗的"姓名/语文/数学",第二行是具体数据。


10.3. 进阶结构(语义化分段)------ 让表格更"专业"

在实际开发中,为了区分表头、主体和尾部,我们会用三个标签把表格分成三块(类似 <html> 里的 <head><body>):

  • <thead> :包裹表头行(<th>),表头区域。

  • <tbody> :包裹数据主体行(<td>),核心数据区域。

  • <tfoot>:包裹汇总行(如"总分/平均分"),表格底部区域。

标准进阶模板

html 复制代码
<table>
    <thead>
        <tr><th>月份</th><th>收入</th></tr>
    </thead>
    <tbody>
        <tr><td>1月</td><td>5000</td></tr>
        <tr><td>2月</td><td>6000</td></tr>
    </tbody>
    <tfoot>
        <tr><td>总计</td><td>11000</td></tr>
    </tfoot>
</table>

好处:浏览器滚动长表格时,表头可以固定不动;搜索引擎也更容易理解数据逻辑。


10.4. 合并单元格(重点!)

合并列或行,只需要在 <td><th> 里加两个属性:

  • colspan :横向合并 (左右合并)。比如 colspan="2" 表示这个格子占两列宽。

  • rowspan :纵向合并 (上下合并)。比如 rowspan="3" 表示这个格子占三行高。

示例(合并单元格)

html 复制代码
<table border="1">
    <tr>
        <td colspan="2">占两列</td>
        <td>第三列</td>
    </tr>
    <tr>
        <td rowspan="2">占两行</td>
        <td>第二行第二列</td>
        <td>第二行第三列</td>
    </tr>
    <tr>
        <td>第三行第二列</td>
        <td>第三行第三列</td>
    </tr>
</table>

11.表单

HTML 表单(<form>)是网页与用户交互的桥梁 ,比如登录框、注册页、搜索栏、评论区的背后都是它。它的核心任务是:收集用户输入的数据,并发送给后端服务器

要学好表单,我们只需掌握 "一个容器 + 三大类控件" 的嵌套关系。下面是完整的实战拆解:


11.1. 表单的"总指挥":<form> 标签

它是所有输入框、按钮的大管家,有两个核心属性必须理解:

  • action :指定数据发送给哪个后台程序(比如 action="/login.php")。

  • method :指定数据传输方式(GET 用于搜索(数据暴露在网址上),POST 用于密码/注册(数据隐藏,较安全))。


11.2. 三大类控件(表单的核心零件)

控件标签 中文俗称 核心属性 特点(单/双标签)
<input> 万能输入器 type (决定形态) + name (数据名称,必写! 单标签(没有闭合标签)
<textarea> 多行文本框 rows(行数)、cols(列数) 双标签(中间是默认文字)
<select> + <option> 下拉菜单 <select> 里的 name<option> 里的 value 双标签(嵌套结构)
<button> 按钮 type="submit"(提交) / reset(重置) 双标签(里面可以放文字或图标)

11.3. <input> 的 7 种最常用 type

type 值 作用 示例显示效果
text 普通文本输入框(用户名) 显示明文
password 密码输入框 显示为圆点或星号
radio 单选框(性别选择) 圆形,同一组必须同名(name一致)
checkbox 复选框(爱好/条款) 方形,可多选
email 邮箱输入框 手机端会调出 @ 键盘,自带简单校验
file 文件上传 点击弹出选择文件窗口
submit 提交按钮 点击即触发表单提交动作
reset 重置按钮 点击清空表单内所有填写内容

11.4. 至关重要的连接器:<label> 标签

作用 :点击文字时,自动聚焦到对应的输入框(提升用户体验,对盲人阅读器也友好)。

用法 :用 for 属性指向输入框的 id

html 复制代码
<!-- 点击"用户名:"这三个字,光标会自动跳到后面的输入框 -->
<label for="user">用户名:</label>
<input type="text" id="user" name="username">

11.5. 完整实战模板(复制到 VS Code 运行)

下面是一个包含了校验、下拉菜单、多行文本的典型注册表单:

html 复制代码
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>用户注册表单</title>
</head>
<body>
    <h2>📝 用户注册</h2>
    <!-- action="#" 表示提交给当前页面(仅演示) -->
    <form action="#" method="POST">
        <!-- 1. 文本输入框 -->
        <label for="username">用户名:</label>
        <input type="text" id="username" name="username" placeholder="请输入4-12位字符" required>
        <br><br>

        <!-- 2. 密码输入框 -->
        <label for="pwd">密码:</label>
        <input type="password" id="pwd" name="password" placeholder="至少6位" required>
        <br><br>

        <!-- 3. 单选框(注意:name 必须一样,才能实现单选互斥) -->
        <span>性别:</span>
        <input type="radio" id="male" name="gender" value="male">
        <label for="male">男</label>
        <input type="radio" id="female" name="gender" value="female">
        <label for="female">女</label>
        <br><br>

        <!-- 4. 复选框 -->
        <input type="checkbox" id="agree" name="agreement" value="yes" required>
        <label for="agree">我已阅读并同意《用户协议》</label>
        <br><br>

        <!-- 5. 下拉菜单 -->
        <label for="city">所在城市:</label>
        <select id="city" name="city">
            <option value="beijing">北京</option>
            <option value="shanghai" selected>上海</option> <!-- selected 默认选中 -->
            <option value="guangzhou">广州</option>
        </select>
        <br><br>

        <!-- 6. 多行文本域(个人简介) -->
        <label for="intro">个人简介:</label><br>
        <textarea id="intro" name="introduction" rows="4" cols="40" placeholder="说说你的特长..."></textarea>
        <br><br>

        <!-- 7. 提交 & 重置 按钮 -->
        <button type="submit">立即注册</button>
        <button type="reset">清空重填</button>
    </form>
</body>
</html>
相关推荐
胡萝卜术13 小时前
当大模型遇上浏览器:用 React + WebGPU 在前端跑通 DeepSeek-R1 的实战笔记
前端·javascript·面试
不好听61313 小时前
Tailwind CSS 原子化 CSS 完全入门:为什么现代前端开发都在用?
前端·css
触底反弹14 小时前
🔥 React 零基础入门(上):环境搭建 + JSX 深度解析
前端·react.js·typescript
why技术14 小时前
分享一套我一直在使用的 AICoding 组合拳,小而美的典范。
前端·后端·ai编程
朦胧之14 小时前
AI应用-消费流式输出
前端·javascript·ai编程
小林ixn14 小时前
在浏览器跑通 15 亿参数大模型:我用 React + WebGPU 复刻了 DeepSeek-R1
前端·react.js·前端框架
Csvn15 小时前
容器查询 @container 实战:告别无休止的媒体查询
前端
稚南城才子,乌衣巷风流17 小时前
函数:编程中的核心概念
开发语言·前端·javascript
IT_陈寒18 小时前
为什么我的JavaScript异步代码总是不按顺序执行?
前端·人工智能·后端
索西引擎18 小时前
【React】useState 状态更新机制:批量更新策略与“异步“错觉的深层解析
前端·react.js·前端框架