这里的“二手”有两层含义:

- 实践项目是“二手”相关的:我们将围绕一个“二手闲置物品交易平台”来展开所有实践。
- 学习方式是“接地气”的:教程会从最基础、最实用的角度出发,避免过多理论,直接上手写代码,让你能快速看到成果。
HTML5 网页开发实践教程:从零开始搭建一个二手交易平台
核心理念
不要只看不练,跟着教程一行一行敲,你就是开发者。
我们将使用最简单、最核心的技术栈来完成这个项目:
- HTML5: 网页的骨架和内容。
- CSS3: 网页的“美颜”和样式。
- JavaScript (原生): 网页的大脑和交互逻辑。
我们不需要任何复杂的框架(如 React, Vue),因为我们是在“实践”基础。
第一部分:准备工作 - 你的“开发工具箱”
在开始写代码之前,你需要准备三样东西,它们都是免费的。

-
代码编辑器: 用来写代码的软件。
- 强烈推荐: Visual Studio Code (VS Code),功能强大,插件丰富,免费。
- 下载地址: https://code.visualstudio.com/
-
网页浏览器: 用来查看你写的网页效果。
- 推荐: Google Chrome 或 Microsoft Edge,它们有强大的开发者工具,方便我们调试。
- 自带功能: 任何现代浏览器都可以。
-
本地服务器: 一个在你电脑上运行的、模拟真实网站环境的小程序。
- 为什么需要? 因为一些现代网页技术(比如我们后面会用到的
fetchAPI)在直接用file://打开本地 HTML 文件时会因为“安全策略”而失效,本地服务器可以解决这个问题。 - 最简单的选择: Live Server (VS Code 插件)。
- 安装方法: 在 VS Code 中,点击左侧的扩展图标(像积木块的那个),搜索 "Live Server",然后点击 "Install"。
- 为什么需要? 因为一些现代网页技术(比如我们后面会用到的
第二部分:项目启动 - 搭建我们的“小破站”骨架
我们开始创建项目。

步骤 1: 创建项目文件夹
在你的电脑上新建一个文件夹,命名为 second-hand-market (或者你喜欢的任何名字)。
步骤 2: 创建核心文件
在 second-hand-market 文件夹里,创建以下三个文件:
index.html(首页)style.css(样式表)script.js(脚本)
步骤 3: 用 Live Server 运行项目
在 VS Code 中打开 second-hand-market 文件夹,然后找到 index.html 文件,右键点击,选择 "Open with Live Server",你的浏览器会自动打开,并显示一个空白页面,恭喜你,你的本地服务器已经启动!
第三部分:实战演练 - 从一个简单的商品列表开始
我们的目标是先做出一个能展示二手商品列表的页面。
第 1 步:用 HTML5 搭建页面结构 (index.html)
打开 index.html 文件,输入以下代码。请仔细阅读注释,它会告诉你每一行是做什么的。
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<!-- 告诉浏览器这个页面是响应式的,适配不同设备 -->
<meta name="viewport" content="width=device-width, initial-scale=1.0">二手好物 - 让闲置流动起来</title>
<!-- 引入我们的 CSS 文件 -->
<link rel="stylesheet" href="style.css">
</head>
<body>
<header>
<h1>二手好物</h1>
<p>一个简单的二手闲置交易平台</p>
</header>
<main>
<h2>正在出售的商品</h2>
<!-- 商品列表容器 -->
<div id="product-list">
<!-- 商品 1 -->
<div class="product-card">
<img src="https://via.placeholder.com/150" alt="商品图片">
<h3>九成新的 MacBook Pro</h3>
<p class="description">2025款,M1芯片,8G+256G,几乎无划痕,因换新机出售。</p>
<p class="price">¥ 6500</p>
<button class="buy-button">立即购买</button>
</div>
<!-- 商品 2 -->
<div class="product-card">
<img src="https://via.placeholder.com/150" alt="商品图片">
<h3>索尼 WH-1000XM4 降噪耳机</h3>
<p class="description">黑色,购买一年,音质极佳,降噪效果拔群。</p>
<p class="price">¥ 1200</p>
<button class="buy-button">立即购买</button>
</div>
<!-- 商品 3 -->
<div class="product-card">
<img src="https://via.placeholder.com/150" alt="商品图片">
<h3>宜家白色书桌</h3>
<p class="description">1.2米长,简约风格,搬家忍痛割爱。</p>
<p class="price">¥ 200</p>
<button class="buy-button">立即购买</button>
</div>
</div>
</main>
<!-- 引入我们的 JavaScript 文件,放在 body 末尾是最佳实践 -->
<script src="script.js"></script>
</body>
</html>
保存 index.html 并刷新浏览器。 你会看到一个没有样式的、很丑的商品列表,别担心,下一步我们来“美颜”。
第 2 步:用 CSS3 美化页面 (style.css)
打开 style.css 文件,输入以下代码来为我们的商品列表穿上“衣服”。
/* 全局样式重置,让所有浏览器看起来更一致 */
* {
box-sizing: border-box;
margin: 0;
padding: 0;
}
body {
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
background-color: #f4f4f4;
color: #333;
line-height: 1.6;
}
/* 页头样式 */
header {
background-color: #2c3e50;
color: #fff;
text-align: center;
padding: 1rem;
}
header h1 {
font-size: 2.5rem;
}
区域 */
main {
max-width: 1200px;
margin: 2rem auto;
padding: 0 1rem;
}
main h2 {
text-align: center;
margin-bottom: 2rem;
color: #2c3e50;
}
/* 商品列表容器 */
#product-list {
display: grid; /* 使用 CSS Grid 布局,非常现代和强大 */
grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); /* 自动填充,每列最小300px */
gap: 2rem; /* 卡片之间的间距 */
}
/* 商品卡片样式 */
.product-card {
background: #fff;
border: 1px solid #ddd;
border-radius: 8px;
overflow: hidden; /* 让图片圆角生效 */
box-shadow: 0 4px 8px rgba(0,0,0,0.1);
transition: transform 0.3s ease, box-shadow 0.3s ease; /* 添加悬停动画效果 */
}
.product-card:hover {
transform: translateY(-5px);
box-shadow: 0 8px 16px rgba(0,0,0,0.2);
}
.product-card img {
width: 100%;
height: 200px;
object-fit: cover; /* 保证图片不变形 */
}
.product-card h3 {
padding: 1rem;
font-size: 1.2rem;
border-bottom: 1px solid #eee;
}
.product-card .description {
padding: 0 1rem;
color: #666;
font-size: 0.9rem;
}
.product-card .price {
padding: 0 1rem;
font-size: 1.5rem;
font-weight: bold;
color: #e74c3c;
}
.product-card .buy-button {
display: block;
width: 80%;
margin: 1rem auto;
padding: 0.8rem;
background-color: #3498db;
color: #fff;
border: none;
border-radius: 5px;
cursor: pointer;
font-size: 1rem;
transition: background-color 0.3s ease;
}
.product-card .buy-button:hover {
background-color: #2980b9;
}
保存 style.css 并刷新浏览器。 看看!是不是瞬间变得好看了很多?这就是 CSS 的魔力。
第 3 步:用 JavaScript 添加交互 (script.js)
页面好看了,但按钮是“死”的,点击它没有任何反应,我们用 JavaScript 来让它活起来。
打开 script.js 文件,输入以下代码:
// 当整个网页内容加载完毕后,再执行这个函数
document.addEventListener('DOMContentLoaded', () => {
// 1. 获取所有的“立即购买”按钮
const buyButtons = document.querySelectorAll('.buy-button');
// 2. 遍历每一个按钮,并给它添加点击事件
buyButtons.forEach(button => {
button.addEventListener('click', (event) => {
// event.target 就是被点击的那个按钮
const clickedButton = event.target;
// 找到这个按钮所在的“商品卡片”
const productCard = clickedButton.closest('.product-card');
// 从商品卡片里提取商品名称和价格
const productName = productCard.querySelector('h3').innerText;
const productPrice = productCard.querySelector('.price').innerText;
// 弹出一个提示框,告诉用户购买了什么
// 在实际项目中,这里会跳转到支付页面或发送数据到服务器
alert(`你已成功将 "${productName}" 加入购物车!价格:${productPrice}`);
});
});
});
保存 script.js 并刷新浏览器。 点击任何一个“立即购买”按钮,都会弹出一个提示框,恭喜,你成功地为你的网站添加了第一个交互功能!
第四部分:总结与下一步
我们完成了什么?
- ✅ 搭建了本地开发环境。
- ✅ 创建了 HTML、CSS、JS 三个核心文件。
- ✅ 使用 HTML5 语义化标签构建了页面结构。
- ✅ 使用 CSS3(特别是 Grid 和 Flexbox)实现了现代化的响应式布局。
- ✅ 使用原生 JavaScript 为页面添加了基本的交互逻辑。
接下来可以做什么?(进阶实践)
-
创建一个发布商品的表单:
- 在
index.html的main里添加一个<form>。 - 表单里包含:商品名称、描述、价格、图片上传(用
<input type="file">)等字段。 - 用 CSS 美化这个表单。
- 用 JavaScript 监听表单的
submit事件,获取表单数据,并动态地创建一个新的.product-card,添加到#product-list中。
- 在
-
使用 LocalStorage 模拟数据库:
- 当你通过表单发布新商品时,不要只添加到页面上,而是把商品信息(一个 JS 对象)转换成 JSON 字符串,然后用
localStorage.setItem()存储到浏览器的本地存储里。 - 当页面加载时,先检查
localStorage里面有没有商品数据,如果有,就把它读取出来,然后循环生成商品卡片,这样刷新页面后商品也不会消失。
- 当你通过表单发布新商品时,不要只添加到页面上,而是把商品信息(一个 JS 对象)转换成 JSON 字符串,然后用
-
添加搜索和筛选功能:
- 在页面顶部添加一个搜索框。
- 用 JavaScript 监听输入事件,当用户输入时,遍历所有商品卡片,判断它的标题或描述是否包含搜索关键词,如果不包含,就把它隐藏(
display: none;)。
-
美化细节:
- 添加一个页脚 (
<footer>)。 - 添加一个导航栏 (
<nav>)。 - 为按钮添加更酷的动画效果。
- 添加一个页脚 (
学习编程最好的方式就是动手实践,不要怕搞错,代码错了浏览器会告诉你,大胆地去修改、去尝试,这个小小的二手平台就是你的练兵场!
