JavaScript网页设计案例:响应式动态购物车

news/2025/1/8 4:14:34/

       在现代网页开发中,购物车是电子商务网站的重要功能之一。通过JavaScript,我们可以实现一个响应式动态购物车,提供用户友好的体验,并展示前端开发的核心能力。


案例需求

我们的购物车需要实现以下功能:

  1. 动态添加商品:用户可以从商品列表中选择并添加商品到购物车。
  2. 实时更新:购物车的商品数量、价格和总金额自动更新。
  3. 修改商品数量:用户可以调整购物车中商品的数量。
  4. 移除商品:用户可以从购物车中移除商品。
  5. 结算功能:显示总金额并模拟提交订单。

HTML结构

首先,我们构建基本的HTML页面结构,包含商品展示区和购物车。

<!DOCTYPE html>
<html lang="en">
<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><div class="container"><h1>在线商店</h1><div class="product-list"><div class="product" data-id="1" data-price="50"><h2>商品A</h2><p>价格:$50</p><button class="add-to-cart">添加到购物车</button></div><div class="product" data-id="2" data-price="100"><h2>商品B</h2><p>价格:$100</p><button class="add-to-cart">添加到购物车</button></div><div class="product" data-id="3" data-price="150"><h2>商品C</h2><p>价格:$150</p><button class="add-to-cart">添加到购物车</button></div></div><div class="shopping-cart"><h2>购物车</h2><ul id="cart-items"></ul><p id="total-price">总金额:$0</p><button id="checkout">结算</button></div></div><script src="script.js"></script>
</body>
</html>

CSS样式

设计一个简洁的样式,使页面布局清晰且美观。

body {font-family: Arial, sans-serif;margin: 0;padding: 0;background-color: #f8f9fa;color: #333;display: flex;justify-content: center;align-items: center;height: 100vh;
}.container {background: #ffffff;padding: 20px;border-radius: 5px;box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);display: flex;gap: 20px;
}.product-list, .shopping-cart {width: 50%;
}.product {background: #f1f1f1;padding: 15px;border: 1px solid #ddd;border-radius: 4px;margin-bottom: 10px;
}button {background-color: #007bff;color: #fff;border: none;border-radius: 4px;padding: 10px;cursor: pointer;transition: background-color 0.3s;
}button:hover {background-color: #0056b3;
}#cart-items {list-style: none;padding: 0;
}#cart-items li {display: flex;justify-content: space-between;margin-bottom: 10px;
}#total-price {font-size: 18px;font-weight: bold;
}

JavaScript功能实现

通过JavaScript,我们实现动态交互功能。

javascript">document.addEventListener('DOMContentLoaded', () => {const cartItems = document.getElementById('cart-items');const totalPrice = document.getElementById('total-price');const checkoutButton = document.getElementById('checkout');const addToCartButtons = document.querySelectorAll('.add-to-cart');let cart = [];// 添加商品到购物车addToCartButtons.forEach(button => {button.addEventListener('click', () => {const productElement = button.parentElement;const productId = productElement.getAttribute('data-id');const productName = productElement.querySelector('h2').textContent;const productPrice = parseFloat(productElement.getAttribute('data-price'));const existingProduct = cart.find(item => item.id === productId);if (existingProduct) {existingProduct.quantity += 1;} else {cart.push({ id: productId, name: productName, price: productPrice, quantity: 1 });}updateCartUI();});});// 更新购物车UIfunction updateCartUI() {cartItems.innerHTML = '';let total = 0;cart.forEach(item => {total += item.price * item.quantity;const cartItem = document.createElement('li');cartItem.innerHTML = `${item.name} - $${item.price} x ${item.quantity}<button class="remove-item" data-id="${item.id}">移除</button>`;cartItems.appendChild(cartItem);// 移除商品cartItem.querySelector('.remove-item').addEventListener('click', () => {cart = cart.filter(cartItem => cartItem.id !== item.id);updateCartUI();});});totalPrice.textContent = `总金额:$${total.toFixed(2)}`;}// 模拟结算checkoutButton.addEventListener('click', () => {if (cart.length === 0) {alert('购物车为空!');return;}alert(`订单已提交!总金额:$${cart.reduce((sum, item) => sum + item.price * item.quantity, 0).toFixed(2)}`);cart = [];updateCartUI();});
});

功能演示

  1. 商品添加:点击“添加到购物车”,商品立即显示在购物车列表中。
  2. 实时更新:购物车总金额自动更新,无需刷新页面。
  3. 数量修改:添加相同商品会增加数量。
  4. 商品移除:点击“移除”按钮即可删除商品。
  5. 订单提交:点击“结算”按钮,模拟提交订单。

总结

通过本案例,你学习了如何使用HTML、CSS和JavaScript构建一个功能完整的动态购物车。这个案例不仅展示了前端开发的基本技能,还可以作为更复杂的电子商务项目的起点。


http://www.ppmy.cn/news/1561456.html

相关文章

【C语言程序设计——选择结构程序设计】求一元二次方程的根(头歌实践教学平台习题)【合集】

目录&#x1f60b; 任务描述 相关知识 sqrt() 函数 编程要求 测试说明 通关代码 测试结果 任务描述 本关任务&#xff1a;根据求根公式&#xff0c;计算并输出一元二次方程的两个实根&#xff0c;要求精确道小数点后2位。要求方程系数从键盘输入。如果输入的系数不满足求…

开源模型应用落地-qwen2-7b-instruct-LoRA微调合并-ms-swift-单机单卡-V100(十三)

一、前言 本篇文章将使用ms-swift去合并微调后的模型权重,通过阅读本文,您将能够更好地掌握这些关键技术,理解其中的关键技术要点,并应用于自己的项目中。 二、术语介绍 2.1. LoRA微调 LoRA (Low-Rank Adaptation) 用于微调大型语言模型 (LLM)。 是一种有效的自适应策略,…

【C++】P5732 【深基5.习7】杨辉三角

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 &#x1f4af;前言&#x1f4af;题目描述输入输出格式输入输出 输入输出样例 &#x1f4af;我的实现方法实现解析实现的优点改进空间 &#x1f4af;老师的实现方法实现解析优缺点对比 &#x1f4af;优化与…

【商城的功能开发】

商城的功能开发是一个复杂且多方面的过程&#xff0c;涉及前端和后端的开发、用户界面设计、数据库管理、支付系统集成等多个环节。以下是一些关键功能和步骤&#xff0c;可以帮助你了解商城开发的基本流程&#xff1a; 一、需求分析 目标用户&#xff1a;确定目标市场和用户需…

Redis 实现分布式锁

文章目录 引言一、Redis的两种原子操作1.1 Redis 的原子性1.2 单命令1.3 Lua 脚本1.4 对比单命令与 Lua 脚本 二、Redis 实现分布式锁2.1 分布式锁的概念与需求2.1.1 什么是分布式锁&#xff1f;2.1.2 分布式锁的常见应用场景 2.2 基于 Redis 的分布式锁实现2.2.1 锁的获取与释…

CPU过剩是什么意思? 有什么对电脑的影响吗?如何确认CPU有没有过剩

CPU 过剩通常是指计算机系统中 CPU 的性能远远超出了当前运行任务的需求。以下从产生原因和对电脑的影响为你详细介绍&#xff1a; 产生原因 硬件升级与软件发展不同步&#xff1a;用户为追求高性能提前升级了 CPU&#xff0c;而当前的软件应用程序在算法和功能上没有太大突破&…

用python编写一个放烟花的小程序

import pygame import random # 代码解释及使用说明&#xff1a; # 首先&#xff0c;导入 pygame 和 random 库。pygame 用于创建游戏窗口和图形绘制&#xff0c;random 用于生成随机数。 # 初始化 pygame&#xff0c;并设置屏幕尺寸为 800x600 像素&#xff0c;设置窗口标题为…

CSS——14.交集选择器

选择既要满足div元素又要满足 类名为abc的元素 即只要这个元素&#xff1a;< div class“abc”>我爱学习2< /div >变红&#xff0c;无论是单独使用div标签选择器还是单独使用 ".abc"类选择器都无法实现只让< div class“abc”>我爱学习2< /div …