Skip to content

练习三:响应式网页项目 - 在线商城首页

项目简介

目标:开发一个响应式在线商城首页,展示商品列表,适配移动端,支持搜索和筛选功能。

主要功能

  • 商品卡片展示(图片 + 价格 + 购买按钮)

  • 响应式布局(适配 PC & 手机)

  • CSS Flexbox/Grid 布局

  • 媒体查询 @media 适配不同设备

  • JavaScript 实现搜索功能

技术栈

HTML + CSS(页面结构与样式)

CSS Flexbox/Grid(实现响应式布局)

媒体查询 @media(适配不同设备)

JavaScript(搜索 & 过滤商品)

任务拆解

任务 1:设计商城首页,包含商品列表

任务 2:使用 Flexbox / Grid 布局

任务 3:使用 @media 实现自适应

任务 4:添加搜索栏,实现商品筛选

任务 5:优化性能(懒加载)

代码示例

📌 HTML 结构

html
<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>在线商城</title>
    <link rel="stylesheet" href="styles.css">
</head>
<body>
    <header>
        <h1>商城</h1>
        <input type="text" id="search" placeholder="搜索商品...">
    </header>
    <section class="products">
        <div class="product" data-name="苹果">🍎 苹果 - ¥10</div>
        <div class="product" data-name="香蕉">🍌 香蕉 - ¥5</div>
        <div class="product" data-name="橙子">🍊 橙子 - ¥8</div>
    </section>

    <script src="script.js"></script>
</body>
</html>

📌 CSS 响应式布局

css
body {
    font-family: Arial, sans-serif;
    text-align: center;
}

header {
    background: #007BFF;
    color: white;
    padding: 10px;
}

input {
    padding: 5px;
    width: 80%;
    margin-top: 10px;
}

.products {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
    gap: 10px;
    padding: 20px;
}

.product {
    background: white;
    padding: 20px;
    border-radius: 5px;
    box-shadow: 0px 0px 5px rgba(0, 0, 0, 0.1);
}

@media (max-width: 600px) {
    .products { grid-template-columns: 1fr; }
}

📌 JavaScript 搜索功能

js
document.getElementById("search").addEventListener("input", function() {
    let filter = this.value.toLowerCase();
    let products = document.querySelectorAll(".product");

    products.forEach(product => {
        let name = product.dataset.name.toLowerCase();
        product.style.display = name.includes(filter) ? "block" : "none";
    });
});

输入关键词,商品列表会动态筛选!

课后挑战

挑战 1:增加“加入购物车”功能

挑战 2:使用 localStorage 记录购物车数据

挑战 3:加载更多商品(滚动分页)

📌 下一步:整合动态数据,升级为 完整在线商城

总结

留言板练习 JavaScript 交互 & LocalStorage

在线商城练习 响应式布局 & 搜索筛选

结合 JavaScript,使网页更加动态化

🚀 下一步:综合前后端,开发完整 Web 应用!