1510 字
8 分钟
前端三件套:HTML、CSS 与 JavaScript
1. 引言
如果把前端开发比作盖房子,那么:
- HTML 是房屋的骨架和结构 —— 墙壁、地板、天花板
- CSS 是装修和装饰 —— 油漆、壁纸、家具摆放
- JavaScript 是水电系统和智能家居 —— 开关灯、调节温度、自动窗帘
三者各司其职,缺一不可。理解了这三件套,你就拿到了前端世界的入场券。
2. HTML:网页的骨架
2.1 HTML 是什么?
HTML(HyperText Markup Language,超文本标记语言)使用标签来描述页面的结构和内容。它不关心好不好看,只关心「有什么」和「是什么」。
<!DOCTYPE html><html lang="zh-CN"><head> <meta charset="UTF-8"> <title>我的第一个网页</title></head><body> <header> <h1>欢迎来到我的网站</h1> <nav> <a href="/">首页</a> <a href="/about">关于</a> </nav> </header> <main> <article> <h2>文章标题</h2> <p>这是一段正文内容。</p> </article> </main> <footer> <p>© 2026 我的网站</p> </footer></body></html>2.2 常用 HTML 标签
| 分类 | 标签 | 用途 |
|---|---|---|
| 结构 | <header>, <main>, <footer>, <nav>, <article>, <section> | 语义化布局 |
| 标题 | <h1> ~ <h6> | 六级标题,h1 最重要 |
| 文本 | <p>, <span>, <strong>, <em> | 段落、行内文本、加粗、强调 |
| 链接 | <a href="..."> | 超链接 |
| 媒体 | <img>, <video>, <audio> | 图片、视频、音频 |
| 列表 | <ul>, <ol>, <li> | 无序列表、有序列表 |
| 表单 | <form>, <input>, <button>, <select> | 用户输入 |
| 容器 | <div> | 通用块级容器 |
2.3 语义化 HTML
语义化就是用正确的标签描述正确的内容,而不是满屏的 <div>:
<!-- ❌ 不推荐:全是 div --><div class="header"> <div class="title">标题</div></div>
<!-- ✅ 推荐:使用语义标签 --><header> <h1>标题</h1></header>语义化的好处:
- SEO:搜索引擎更好地理解页面内容
- 可访问性:屏幕阅读器能准确传达信息给视障用户
- 可维护性:代码结构清晰,团队协作更轻松
3. CSS:网页的皮肤
3.1 CSS 是什么?
CSS(Cascading Style Sheets,层叠样式表)负责网页的视觉呈现:颜色、字体、间距、布局、动画等。
/* 选择器 { 属性: 值; } */body { font-family: 'Inter', sans-serif; background-color: #f5f5f5; color: #333; line-height: 1.6;}
h1 { font-size: 2rem; font-weight: 700; color: #1a1a2e;}
.card { background: white; border-radius: 12px; padding: 24px; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);}3.2 核心概念
选择器
/* 元素选择器 */p { }
/* 类选择器(最常用) */.card { }
/* ID 选择器 */#header { }
/* 组合选择器 */.card:hover { }nav > a { }input[type="text"] { }盒模型
每个元素都是一个矩形盒子,由内到外依次是:
| 层次 | 属性 | 说明 |
|---|---|---|
| content | width / height | 内容区域 |
| padding | padding | 内边距(内容到边框) |
| border | border | 边框 |
| margin | margin | 外边距(元素到元素) |
.box { width: 300px; padding: 20px; border: 1px solid #ddd; margin: 16px; /* 实际占用宽度 = 300 + 20×2 + 1×2 + 16×2 = 374px */}布局:Flexbox 和 Grid
/* Flexbox:一维布局 */.container { display: flex; justify-content: space-between; /* 水平分布 */ align-items: center; /* 垂直居中 */ gap: 16px; /* 间距 */}
/* Grid:二维布局 */.grid { display: grid; grid-template-columns: repeat(3, 1fr); /* 三列等宽 */ gap: 24px;}响应式设计
/* 移动端优先 */.card { width: 100%;}
/* 平板 */@media (min-width: 768px) { .card { width: 50%; }}
/* 桌面 */@media (min-width: 1024px) { .card { width: 33.33%; }}4. JavaScript:网页的大脑
4.1 JavaScript 是什么?
JavaScript(简称 JS)是一门动态、弱类型的脚本语言,让网页「活」起来。它运行在浏览器中,可以操作 HTML 和 CSS,响应用户交互。
// 点击按钮,切换主题const button = document.querySelector('#theme-toggle');const body = document.body;
button.addEventListener('click', () => { body.classList.toggle('dark-mode'); const isDark = body.classList.contains('dark-mode'); button.textContent = isDark ? '☀️ 浅色模式' : '🌙 深色模式';});4.2 核心概念速览
变量和作用域
// let:可变变量(块级作用域)let count = 0;count += 1;
// const:不可变常量(块级作用域)const API_URL = 'https://api.example.com';
// var:旧式写法,有作用域提升问题,不推荐var oldWay = '不要这样写';数据类型
| 类型 | 示例 | 说明 |
|---|---|---|
| Number | 42, 3.14, NaN | 所有数字都是浮点数 |
| String | 'hello', "世界", `模板` | 文本 |
| Boolean | true, false | 逻辑值 |
| Object | { name: 'Alice', age: 25 } | 键值对 |
| Array | [1, 2, 3] | 有序列表 |
| Function | function() {} / () => {} | 可调用对象 |
| Undefined | undefined | 未定义 |
| Null | null | 空值 |
DOM 操作
// 查询元素const el = document.querySelector('.card');const els = document.querySelectorAll('.card');
// 修改内容el.textContent = '新文本';el.innerHTML = '<strong>加粗文本</strong>';
// 修改样式el.style.backgroundColor = '#f0f0f0';el.classList.add('active');el.classList.remove('hidden');
// 创建和插入元素const newDiv = document.createElement('div');newDiv.textContent = '我是新元素';document.body.appendChild(newDiv);异步编程
// Promisefetch('https://api.example.com/data') .then(res => res.json()) .then(data => console.log(data)) .catch(err => console.error(err));
// Async / Await(更推荐的写法)async function fetchData() { try { const res = await fetch('https://api.example.com/data'); const data = await res.json(); console.log(data); } catch (err) { console.error('请求失败:', err); }}5. 三者如何协作
一个实际的前端页面是 HTML、CSS、JavaScript 的协同作品:
<!DOCTYPE html><html lang="zh-CN"><head> <meta charset="UTF-8"> <title>三件套协作示例</title> <!-- CSS --> <style> body { font-family: sans-serif; max-width: 600px; margin: 0 auto; padding: 20px; } .counter { display: flex; align-items: center; gap: 16px; } #count { font-size: 2rem; font-weight: bold; } button { padding: 8px 16px; border: none; border-radius: 8px; cursor: pointer; } .plus { background: #4CAF50; color: white; } .minus { background: #f44336; color: white; } </style></head><body> <h1>计数器</h1> <!-- HTML:结构 --> <div class="counter"> <button class="minus" onclick="decrement()">-</button> <span id="count">0</span> <button class="plus" onclick="increment()">+</button> </div>
<!-- JavaScript:行为 --> <script> let count = 0; const countEl = document.getElementById('count');
function increment() { count++; countEl.textContent = count; }
function decrement() { count--; countEl.textContent = count; } </script></body></html>看到没?HTML 搭好架子,CSS 画好样子,JavaScript 赋予脑子。三者各司其职,组成了你在浏览器里看到的每一个网页。
6. 学习路线建议
| 阶段 | 内容 | 建议时长 |
|---|---|---|
| 入门 | HTML 常用标签 + CSS 选择器 + JS 变量和函数 | 2~3 周 |
| 进阶 | CSS 布局(Flex/Grid)+ JS DOM 操作 + 事件 | 3~4 周 |
| 实战 | 响应式设计 + AJAX/Fetch + ES6 语法 | 4~6 周 |
| 框架 | React 或 Vue(二选一入门) | 8~12 周 |
建议:不要试图一次学完所有东西。先掌握 HTML 和 CSS 做出静态页面,再学 JavaScript 加上交互,最后再接触框架。基础越扎实,框架学起来越轻松。
7. 小结
HTML、CSS、JavaScript 这「三件套」是前端开发的基石,无论你以后使用什么框架(React、Vue、Angular),写什么工具(Webpack、Vite),最终输出的都是这三样东西。
记住这个类比就够了:HTML 是骨架,CSS 是皮囊,JavaScript 是灵魂。
前端三件套:HTML、CSS 与 JavaScript
https://www.hehonglei.cn/technology/frontend-basics-html-css-js/