):
4.订单
与购物车页面相似,同时利用时间戳来生成订单时间
5.评价
与购物车页面相似,利用一些前端的知识来实现评价功能
6.支付
与购物车页面相似,简单输出支付的金额
效果展示
首页


商品详情

购物车

生成订单

评价

支付

数据库展示


代码演示
首页
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="/Static/styles/index.css">
<script src="https://code.jquery.com/jquery-3.6.0.min.js">script>
<script src="Static/js/index.js">script>
<li><a href="/showCart">购物车a>li>
<li><a href="/order">订单a>li>
<li><a href="/showComment">评价a>li>
<li><a href="/payment">支付a>li>
<form class="search-form" action="/search" method="get">
<input type="text" name="query" placeholder="搜索商品...">
<button type="submit">搜索button>
<div class="welcome-banner">
<img src="Static/images/1.png" alt=" 商品图片1" class="active">
<img src="Static/images/2.png" alt="商品图片2">
<img src="Static/images/3.png" alt="商品图片3">
<span class="control-prev"><span>
<span class="control-next">>span>
<h2 class="recommended-title">推荐商品h2>
<a href="/goods?id={{ .GoodId }}">
<img src="{{.ImageUrl}}" alt="{{.GoodName}}" style="width:100px;height:auto;">
<p class="price">价格: {{.Price}}p>
<p>描述: {{.Description}}p>
max-width: 100%; /* 容器宽度占满整个屏幕 */
margin: 20px auto; /* 居中显示 */
width: 100%; /* 图片宽度填充整个轮播图容器 */
height: auto; /* 高度自适应 */
justify-content: space-between;
transform: translateY(-50%);
.carousel .control-prev, .carousel .control-next {
background-color: rgba(0, 0, 0, 0.5);
font-family: Arial, sans-serif;
background-color: #007BFF;
background-color: #f0f8ff; /* 浅蓝色背景 */
text-align: center; /* 文本居中 */
padding: 50px 20px; /* 内边距 */
margin: 20px auto; /* 居中 */
border-radius: 10px; /* 圆角 */
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); /* 阴影效果 */
justify-content: space-around;
box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
color: #e91e63; /* 粉红色价格 */
text-align: center; /* 标题居中 */
商品详情
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="/Static/styles/goods.css">
<script src="https://code.jquery.com/jquery-3.6.0.min.js">script>
<script src="Static/js/goods.js">script>
<li><a href="/showCart">购物车a>li>
<li><a href="/order">订单a>li>
<li><a href="/showComment">评价a>li>
<li><a href="/payment">支付a>li>
<ul class="goods-detail">
<img src="{{.ImageUrl}}" alt="{{.GoodName}}" style="width:300px;height:auto;">
<p class="price">价格: {{.Price}}p>
<p>描述: {{.Description}}p>
<button class="add-to-cart" data-goods-id="{{.GoodId}}">加入购物车button>
justify-content: space-around;
transition: background-color 0.3s ease;
header nav ul li a:hover {
width: 100%; /* 或者你想要的宽度 */
margin: 20px auto; /* 上下外边距为20px,左右自动居中 */
box-sizing: border-box; /* 使得padding不影响元素的宽度 */
display: flex; /* 设置为 flex 容器 */
justify-content: center; /* 水平居中 */
align-items: center; /* 垂直居中(如果 main 只有一个子元素的话) */
/* 注意:如果 main 中有多个子元素,你可能需要调整这些属性或移除它们 */
/* 假设 goods-detail 现在是 li 的父元素 */
.goods-list { /* 可能你需要将 goods-detail 改为一个更有意义的类名,如 goods-list */
display: flex; /* 设置为 flex 容器 */
flex-direction: column; /* 子项垂直排列 */
align-items: center; /* 子项在交叉轴上居中(对于列布局来说,就是水平居中) */
text-align: center; /* 文本内容居中 */
max-width: 800px; /* 假设你希望商品详情有一个最大宽度 */
margin: 0 auto; /* 左右外边距自动,以在水平方向上居中 */
/* 设置 goods-detail 的样式(现在作为 li 的样式) */
.goods-list li { /* 假设每个商品详情项是一个 li 元素 */
list-style-type: none; /* 移除默认的列表样式 */
margin-bottom: 20px; /* 每个商品详情项之间的间距 */
.goods-detail .add-to-cart {
display: inline-block; /* 内联块级元素 */
padding: 10px 20px; /* 内边距 */
background-color: #4CAF50; /* 背景色 */
border-radius: 4px; /* 边框圆角 */
cursor: pointer; /* 鼠标悬停时变为小手形状 */
text-decoration: none; /* 去除下划线 */
transition: background-color 0.3s ease; /* 背景色过渡效果 */
.goods-detail .add-to-cart:hover {
background-color: #45a049; /* 鼠标悬停时的背景色 */
购物车
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="/Static/styles/carts.css">
<script src="https://code.jquery.com/jquery-3.6.0.min.js">script>
<script src="Static/js/carts.js">script>
<li><a href="/showCart">购物车a>li>
<li><a href="/order">订单a>li>
<li><a href="/showComment">评价a>li>
<li><a href="/payment">支付a>li>
<button id="generateOrder">生成订单button>
{{range $key, $value := .}}
<td>{{$value.GoodName}}td>
<td><img src="{{$value.ImageUrl}}" alt="{{$value.GoodName}}" width="100">td>
<td>{{$value.Quantity}}td>
<td><button class="delete-item" data-goods-id="{{$value.GoodId}}">删除button>td>
订单
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="/Static/styles/order.css">
<script src="https://code.jquery.com/jquery-3.6.0.min.js">script>
<script src="Static/js/order.js">script>
<li><a href="/showCart">购物车a>li>
<li><a href="/order">订单a>li>
<li><a href="/showComment">评价a>li>
<li><a href="/payment">支付a>li>
{{ range $index, $order := . }}
<td>{{ $order.OrderId }}td>
<td>{{ $order.GoodName }}td>
<td>{{ $order.Quantity }}td>
<td>{{ $order.Price }}td>
<td class="total-price">{{ $order.TotalPrice }}td>
<td>{{ $order.OrderTime }}td>
<div class="payment-section">
<label for="payment-method">选择支付方式:label>
<select id="payment-method" name="payment-method">
<option value="weChat">微信option>
<option value="alipay">支付宝option>
<option value="bankCardPayment">银行卡option>
<button id="checkout">结算button>
评价
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="/Static/styles/comment.css">
<script src="https://code.jquery.com/jquery-3.6.0.min.js">script>
<script src="Static/js/comment.js">script>
<li><a href="/showCart">购物车a>li>
<li><a href="/order">订单a>li>
<li><a href="/showComment">评价a>li>
<li><a href="/payment">支付a>li>
<img src="{{.ImageUrl}}" alt="{{.GoodName}}">
<div class="review-form">
<form class="reviewForm" data-product-id="{{.GoodId}}">
<input type="hidden" class="productId" value="{{.GoodId}}">
<textarea class="reviewContent" placeholder="请输入您的评价">textarea>
<button type="submit">提交评价button>
支付
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="/Static/styles/pay.css">
<li><a href="/showCart">购物车a>li>
<li><a href="/order">订单a>li>
<li><a href="/showComment">评价a>li>
<li><a href="/payment">支付a>li>
代码太多了,小郑就不展示完整代码了,这个电子商场的作业还不是很完善,小郑有时间的话会进行优化修改。
相关阅读:
Vim实用技巧_7.模式匹配和查找
vue部署之后提示用户更新的两种方式(http请求和worker线程请求)
BM58 字符串的排列
第五节、常见的基础问题
【数据库】openGauss3.1.0版本做了哪些优化
RuntimeError: Error compiling objects for extension手把手带你解决(超详细)
Docker安装Jenkins笔记
昆仑芯 AI 加速卡 R200 与龙蜥操作系统完成产品兼容认证
vue3基础语法
SLAM中的二进制词袋生成过程和工作原理
原文地址:https://blog.csdn.net/m0_74948742/article/details/140296815