Lesson 3.1

前端基础知识

先建立页面认知,再进入前端 vibe coding

Why It Matters

为什么需要学基础知识

01

说得清

知道什么叫结构、标签、容器、选择器,你才能把页面要求讲清楚,不会只说“帮我做个好看的页面”。

02

改得动

理解 HTML / CSS / JS 各自负责什么,就能快速判断改动点,不会把样式问题、结构问题、逻辑问题混在一起。

03

看得懂

读懂 AI 产出的代码,是以后继续迭代、排查问题、做交互演示的基础,不然只能碰运气。

Course Map

本节课目录

从三件套关系入手,过渡到 HTML 结构,再进入选择、样式和交互逻辑。

前端页面由哪三部分组成?
HTML、CSS、JavaScript

Core Stack

HTML、CSS、JS 分别解决什么问题?

product-demo.html
Prompt Builder
Landing Page

把页面需求拆成结构、样式和交互

同一个页面会随着能力叠加,从结构草图,逐步变成可交互的产品界面。

3 步 先结构,后样式,再交互。
页面完成度
能力叠加越完整,页面越接近真实产品。
结构清晰 先把标题、按钮和内容块摆出来,页面才有骨架。
视觉建立 颜色、圆角和留白,会决定页面是不是像产品。
状态反馈 交互让按钮、筛选和提示条对用户操作做出即时响应。 已触发交互
点击后,页面状态已更新

HTML

负责把标题、按钮、内容区这些页面骨架先搭出来,让浏览器知道每块内容应该放在哪里。

CSS

负责把已经存在的结构变得更有层次,决定颜色、间距、大小、布局和整体视觉质感。

JavaScript

负责让页面对点击、输入和状态变化做出响应,把静态界面变成真正可操作的产品页面。

Relationship Map

三者是什么关系呢?

HTML 是骨架中心

HTML

HTML 的组成

`head`
`body`
容器 body 里继续承接页面结构

HTML 的标记方式

语义标签 header / main / section
通用标签 div / span

HTML 的增强

CSS 视觉样式渲染
JS 交互逻辑渲染

HTML的组成

Head & Body

一个 HTML 页面最核心的两块:`head` 和 `body`

lesson-basic.html
<head> 页面配置区

`title`、`meta`、`link`、`script` 这些信息放在这里,负责告诉浏览器怎么理解和准备这个页面。

<body> 页面展示区

这里承载用户真正会看到的页面内容,下面再继续拆成不同的功能区域。

<header> 顶部区域、导航、品牌信息
<aside>

菜单、辅助说明、侧边信息。

<main>

页面主要内容都在这里组织。

<section> / <article>

继续往下拆成一个个内容容器。

<footer> 页脚、版权、补充信息
Landing Layout

常见body排版:单列落地页

单列落地页

页面类型

官网首页、课程介绍页、活动落地页

适用场景

从上到下介绍信息,带用户顺着页面阅读。

展示目的

强调品牌、卖点、案例与转化入口。

单列信息流 Landing
header
banner / hero
section
section / case
footer

内容按顺序往下展开,阅读路径最直接。

Detail Layout

常见body排版:双栏详情页

双栏详情页

页面类型

商品详情页、内容详情页、案例解析页

适用场景

一侧放辅助信息,一侧承载主要内容。

展示目的

让重点内容更集中,信息关系更清楚。

双栏内容区 Detail
header
media / summary
main content
action / info
footer

辅助区和主内容区分开后,信息层次更稳定。

Dashboard Layout

常见body排版:侧栏工作台

侧栏工作台

页面类型

后台系统、管理台、数据工作台

适用场景

导航稳定存在,主内容区频繁切换。

展示目的

提升操作效率,方便在多个功能间跳转。

侧边栏工作台 Dashboard
top bar

导航固定在左侧,右侧专门承载列表、表单和数据内容。

Container Map

body的组成——容器

Body 里的结构单元

容器

容器的作用是包裹内容、组织结构,让页面里的内容块有归属、有层级。

有具体语义

语义容器

浏览器一看就知道这块内容承担什么角色。

<header> <main> <section> <article> <aside> <footer>
没有固定语义

通用容器

先把内容包起来,具体作用再靠 class、上下文和样式来说明。

<div> <span>
再按大小和用途看
独占一行

区块容器

更适合承接大块内容区域,负责搭页面骨架。

<section> <article> <div> <main>
跟随文本流动

行内容器

更适合包住文字里的局部内容或小部件。

<span> <strong> <em> <a>
Container Detail 01

容器具体介绍

<header>

语义容器

页面或区块的顶部容器,通常承接品牌、标题、导航或开头信息。

  • 适合放页面头部、模块开场、导航区。
  • 让浏览器知道“这是开头区域”。
站点 Logo 导航菜单

<main>

语义容器

页面最核心的主内容区域,用户最主要阅读和操作的内容通常放这里。

  • 适合承接正文、详情、主工作区。
  • 一页里通常只保留一个主 `main`。
课程正文 商品详情

<section>

语义容器

把一段相关内容组织成一个主题区块,常用于页面中的分段模块。

  • 适合按主题切分内容。
  • 常和标题一起出现,方便一块一块看页面。
课程简介 案例模块

<article>

语义容器

相对独立、可以单独存在的一块内容,常见于卡片、文章、动态、列表项。

  • 适合承接一条完整内容。
  • 常用于列表里重复出现的内容卡片。
文章卡片 商品项
Container Detail 02

容器具体介绍

<aside>

语义容器

主内容旁边的辅助区,用来放说明、目录、侧边导航、推荐信息。

  • 适合承接不是主线但有帮助的信息。
  • 常出现在双栏布局或后台侧栏里。
目录导航 推荐区

<footer>

语义容器

页面或模块的结尾容器,通常放版权、补充链接、收尾说明。

  • 适合承接收尾信息。
  • 让页面结构形成完整的开头和结尾。
版权信息 底部链接

<div>

通用容器

最常见的无语义区块容器,当你只需要“包一层”来做布局或分组时使用。

  • 适合做布局包裹、样式分组、组件外层。
  • 没有明确语义时,用它最稳妥。
卡片外层 栅格列

<span>

通用容器

最常见的无语义行内容器,适合包裹文字中的局部片段或小状态。

  • 适合局部高亮、数字、标签、小图标文字组合。
  • 通常不单独成块,而是嵌在一行文字里。
价格数字 状态标签

HTML的标记方式

Tag Toolkit

常见标签可以按用途分成三组来记

不用一次记住全部,但至少先建立“这个标签大概属于哪一类”的感知。

区块容器 / 大结构

<div> <header> <nav> <main> <section> <article> <aside> <footer> <h1> ~ <h6> <p> <ul> / <li>

这组标签主要负责把页面切成一个个大的区域或内容块。

行内容器 / 局部包裹

<span> <strong> <em> <a> <img> <br> <hr>

这组标签通常跟着文字流动,用于强调、链接、插图或强制换行。

功能性标签 / 可交互表单

<input> <button> <select> <option> <label> <form>

这组标签经常和 JavaScript 一起出现,因为用户会在这里输入、点击和提交。

Tag Guide 01

标签的讲解

先看页面骨架里最常见的 4 个结构标签。

<header>

页面或区块的开头区域。

成对标签

常用于承接标题、Logo、导航,让浏览器知道“这里是开头”。

示例
<header>课程导航</header>

<nav>

导航链接所在的区域。

成对标签

当一组链接主要承担“切换页面或切换区块”的作用时,用 `nav` 更清晰。

示例
<nav>首页 / 课程 / 联系我们</nav>

<main>

页面最核心的主内容区。

成对标签

正文、详情页主体、主工作区通常放这里,一页里一般只保留一个 `main`。

示例
<main>这里放课程正文</main>

<section>

按主题分段的内容区块。

成对标签

适合把页面切成“课程介绍”“案例展示”“用户评价”这种清晰模块。

示例
<section>课程简介模块</section>
Tag Guide 02

标签的讲解

继续看结构层里另外 4 个高频容器标签。

<article>

一块相对独立的完整内容。

成对标签

文章、动态卡片、商品项这类“单独拿出来也能成立”的内容适合用它。

示例
<article>一篇博客摘要</article>

<aside>

主内容旁边的辅助区域。

成对标签

目录、推荐内容、说明栏、后台左侧导航,通常都可以落在 `aside` 里。

示例
<aside>相关课程推荐</aside>

<footer>

页面或模块的收尾区域。

成对标签

版权信息、补充链接、联系方式,通常都放在结尾位置。

示例
<footer>Copyright 2026</footer>

<div>

最常见的通用区块容器。

成对标签

当你只是想包一层做布局、分组或套样式,但没有更明确语义时,用 `div`。

示例
<div class="card">课程卡片</div>
Tag Guide 03

标签的讲解

这 4 个标签负责页面里的标题、段落、列表和局部包裹。

<h1> ~ <h6>

从大到小的标题标签。

成对标签

适合给页面和模块建立层级,`h1` 通常最大,`h6` 最小。

示例
<h1>前端基础课</h1> <h2>第一章:HTML</h2>

<p>

普通段落文本。

成对标签

一段完整说明文字、介绍文案、正文说明,通常都放在 `p` 里。

示例
<p>这是一段课程介绍文案。</p>

<ul> / <li>

无序列表和列表项。

都为成对标签

当一组内容天然是“并列条目”时,用列表会比多个段落更清晰。

示例
<ul> <li>HTML</li> <li>CSS</li> </ul>

<span>

通用的行内包裹标签。

成对标签

适合只包住一句话里的某个词、数字、状态,用来单独加样式或标记。

示例
<p>当前价格:<span>99 元</span></p>
Tag Guide 04

标签的讲解

这组标签更偏向强调、跳转、插图和简单分隔。

<strong>

强调重要内容。

成对标签

适合突出重点词、关键提醒,默认一般会更醒目。

示例
<p><strong>注意:</strong>先写结构。</p>

<em>

表示语气上的强调。

成对标签

适合让某个词更突出,但语义上比 `strong` 更偏“强调语气”。

示例
<p>这一步 <em>非常关键</em>。</p>

<a>

可点击的超链接。

成对标签

用于跳转到其他页面、章节、下载地址,链接文本通常就放在标签内部。

示例
<a href="/course">进入课程页</a>

<img>

在页面中插入图片。

单标签

图片地址一般通过 `src` 提供,说明文字通常写在 `alt` 里。

示例
<img src="cover.png" alt="课程封面">
Tag Guide 05

标签的讲解

最后一组是换行分隔和表单交互标签。

<br> / <hr>

换行和分隔线。

都为单标签

`br` 常用于强制换行,`hr` 常用于视觉分隔内容区块。

示例
第一行<br>第二行 <hr>

<form> / <label>

表单容器和字段说明。

都为成对标签

`form` 用来包住整组输入,`label` 用来告诉用户这个输入框是干什么的。

示例
<form> <label>姓名</label> </form>

<input> / <button>

输入框和按钮。

`input` 单 / `button` 成对

用户输入内容常用 `input`,触发提交、查询、确认等操作常用 `button`。

示例
<input placeholder="请输入关键词"> <button>搜索</button>

<select> / <option>

下拉选择框和选项。

都为成对标签

当用户只能从固定选项里选一个或几个值时,`select` 很常见。

示例
<select> <option>HTML</option> </select>

HTML的增强

HTML Enhancement

什么是html的增强

HTML 先把内容和结构摆出来,接下来再通过样式和交互,让同一份结构变得更好看、更可操作。

交互逻辑增强

JavaScript

JavaScript 负责点击、输入、切换、显示隐藏这些变化,让页面对用户操作做出响应。

  • 点击按钮后弹出提示或切换状态。
  • 切换 tab 后展示不同内容。

选择器是怎么参与的?

为了方便对同一类内容批量增强,CSS 和 JS 往往都会先用选择器选中 HTML 里的元素,再统一加样式或绑定行为。

.card / #title / button
  • 选择器用来“找到谁要被增强”。
  • 找到后,CSS 给它统一样式,JS 给它统一交互。
Selector Compare

选择器的对比

同样是“选中元素”,类名选择、标签选择、id 选择的适用范围并不一样。

类名选择

.card

命名方式:前面加 `.`,后面接类名。

适用场景:一组同类型内容需要统一样式或统一行为时最常用。

优势 可复用,适合批量控制多个元素。
劣势 类名命名混乱时,后期维护会变难。
注意事项 类名要表达角色或用途,不要随便起名。

标签选择

button / p / h2

命名方式:直接写 HTML 标签名。

适用场景:想给某一类基础标签统一默认样式时很方便。

优势 写法最简单,适合全局基础规范。
劣势 影响范围大,容易把不想改的同类标签一起改掉。
注意事项 更适合做基础样式,不适合做复杂局部差异。

id选择

#title

命名方式:前面加 `#`,后面接 id 名。

适用场景:页面里只有一个非常明确的唯一元素需要被选中时使用。

优势 定位最明确,选中的目标通常只有一个。
劣势 复用性差,不适合批量控制一组元素。
注意事项 同一页面里 id 应该唯一,不要多个元素共用同一个 id。
CSS Visual Enhancement

css如何增强视觉样式

颜色 文字颜色、背景色、按钮主色,决定页面第一眼的视觉氛围。
字体 字号、字重、行高、对齐方式,会直接影响可读性和层级感。
间距 内边距、外边距和块与块之间的距离,决定页面呼吸感是否舒服。
边框与装饰 边框、圆角、阴影、分隔线,会让结构从“块”变成“组件”。
布局方式 宽高、对齐、Flex、Grid,会决定多个内容块如何排布在一起。

盒子模型示例

margin / border / padding / content
margin 外边距
border 边框
padding 内边距
content 内容区
标题、文字、按钮这些真正内容,最终都放在这里。
怎么理解? `content` 放内容,`padding` 负责内容和边框的距离,`border` 是边界,`margin` 负责它和外部其他元素的距离。
JavaScript Interaction

js如何增强交互逻辑

触发开始

用户先发生一个动作,页面才会进入交互流程。

JS 监听

JavaScript 先知道“哪个元素被点了、输了、切换了”。

逻辑判断

根据当前状态决定接下来该显示、隐藏、切换还是提交。

页面反馈

把结果作用到页面上,让用户立刻看到变化。

常见触发方式

click单击 doubleclick双击 mousedown按下 mouseup抬起 longpress长按 mouseenter鼠标移入 mouseleave鼠标移出 mousemove鼠标移动 rightclick右键 scroll滚动时 keyboard键盘按键 swipeleft左滑 swiperight右滑 swipeup上滑 swipedown下滑 listen监听 shake摇一摇 load载入时

常见触发后行为

navigate跳转页面 back返回来源页面 link跳转超链接 toggle切换组件状态 scrollto滚动到 showhide显示 / 隐藏 transform变换 animate设置动效 focusblur聚焦 / 失焦输入框 zindex图层排序 playpause播放 / 暂停 openlayer打开浮层 closelayer关闭浮层 switchlayer切换到浮层 setvalue设置变量值 ifelse条件判断
Trigger Showcase 01

触发方式展示

单击

click
button

双击

doubleclick
button
Trigger Showcase 02

触发方式展示

按下

mousedown
button

抬起

mouseup
button
Trigger Showcase 03

触发方式展示

长按

longpress
button

鼠标移入

mouseenter
card
Trigger Showcase 04

触发方式展示

鼠标移出

mouseleave
card

鼠标移动

mousemove
canvas
Trigger Showcase 05

触发方式展示

右键

rightclick
layer

滚动时

scroll
Trigger Showcase 06

触发方式展示

键盘按键

keyboard
A

左滑

swipeleft
Trigger Showcase 07

触发方式展示

右滑

swiperight

上滑

swipeup
Trigger Showcase 08

触发方式展示

下滑

swipedown

监听

listen
Trigger Showcase 09

触发方式展示

摇一摇

shake

载入时

load
Next Lesson

Thanks

下一节:3.2 前端 vibe coding