综述: 优化福利专区积分购物功能,增强用户体验
- 重构积分专区布局,新增标签页切换功能,分离积分换购和积分优惠购内容 - 新增悬浮购物车图标,支持商品数量统计和动画效果,提升购物体验 - 优化积分商品按钮功能,将"立即换购"改为"添加到积分购物车",支持购物车批量管理 - 新增商品添加成功提示功能,采用友好的toast通知方式,避免使用alert弹窗 - 完善积分专区交互逻辑,支持购物车数量实时更新和状态管理 - 优化页面加载提示,新增"下滑展示更多"引导文字,改善用户浏览体验
This commit is contained in:
		
							parent
							
								
									01c6d2adf7
								
							
						
					
					
						commit
						1264aa6d46
					
				
							
								
								
									
										263
									
								
								用户端APP/福利专区.html
								
								
								
								
							
							
						
						
									
										263
									
								
								用户端APP/福利专区.html
								
								
								
								
							|  | @ -129,6 +129,56 @@ | ||||||
|             display: block; |             display: block; | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|  |         /* 积分专区tabs */ | ||||||
|  |         .points-tabs { | ||||||
|  |             display: flex; | ||||||
|  |             justify-content: center; | ||||||
|  |             gap: 20px; | ||||||
|  |             margin-bottom: 20px; | ||||||
|  |             background: white; | ||||||
|  |             border-radius: 15px; | ||||||
|  |             padding: 5px; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         .points-tab { | ||||||
|  |             flex: 1; | ||||||
|  |             text-align: center; | ||||||
|  |             padding: 12px 0; | ||||||
|  |             border-radius: 10px; | ||||||
|  |             font-size: 14px; | ||||||
|  |             font-weight: 500; | ||||||
|  |             cursor: pointer; | ||||||
|  |             transition: all 0.3s ease; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         .points-tab.active { | ||||||
|  |             background: #ff6b35; | ||||||
|  |             color: white; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         .points-tab:not(.active) { | ||||||
|  |             color: #666; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         /* 积分内容区域 */ | ||||||
|  |         .points-content { | ||||||
|  |             display: none; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         .points-content.active { | ||||||
|  |             display: block; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         /* 下拉提示 */ | ||||||
|  |         .load-more-tip { | ||||||
|  |             text-align: center; | ||||||
|  |             color: #999; | ||||||
|  |             font-size: 12px; | ||||||
|  |             margin-top: 20px; | ||||||
|  |             padding: 10px; | ||||||
|  |             opacity: 0.7; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|         /* 积分专区样式 */ |         /* 积分专区样式 */ | ||||||
|         .points-section { |         .points-section { | ||||||
|             background: white; |             background: white; | ||||||
|  | @ -566,6 +616,68 @@ | ||||||
|             justify-content: center; |             justify-content: center; | ||||||
|             font-size: 18px; |             font-size: 18px; | ||||||
|         } |         } | ||||||
|  | 
 | ||||||
|  |         /* 悬浮购物车图标 */ | ||||||
|  |         .floating-cart { | ||||||
|  |             position: fixed; | ||||||
|  |             bottom: 90px; | ||||||
|  |             right: 20px; | ||||||
|  |             width: 60px; | ||||||
|  |             height: 60px; | ||||||
|  |             background: #ff6b35; | ||||||
|  |             border-radius: 50%; | ||||||
|  |             display: flex; | ||||||
|  |             align-items: center; | ||||||
|  |             justify-content: center; | ||||||
|  |             font-size: 28px; | ||||||
|  |             color: white; | ||||||
|  |             box-shadow: 0 4px 12px rgba(255, 107, 53, 0.4); | ||||||
|  |             cursor: pointer; | ||||||
|  |             z-index: 1000; | ||||||
|  |             transition: all 0.3s ease; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         .floating-cart:hover { | ||||||
|  |             transform: scale(1.1); | ||||||
|  |             box-shadow: 0 6px 20px rgba(255, 107, 53, 0.6); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         .floating-cart.bounce { | ||||||
|  |             animation: bounce 0.6s ease; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         .cart-badge { | ||||||
|  |             position: absolute; | ||||||
|  |             top: -5px; | ||||||
|  |             right: -5px; | ||||||
|  |             background: #ff4444; | ||||||
|  |             color: white; | ||||||
|  |             width: 24px; | ||||||
|  |             height: 24px; | ||||||
|  |             border-radius: 50%; | ||||||
|  |             display: flex; | ||||||
|  |             align-items: center; | ||||||
|  |             justify-content: center; | ||||||
|  |             font-size: 12px; | ||||||
|  |             font-weight: bold; | ||||||
|  |             box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         .cart-badge.hidden { | ||||||
|  |             display: none; | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         @keyframes bounce { | ||||||
|  |             0%, 20%, 50%, 80%, 100% { | ||||||
|  |                 transform: translateY(0); | ||||||
|  |             } | ||||||
|  |             40% { | ||||||
|  |                 transform: translateY(-10px); | ||||||
|  |             } | ||||||
|  |             60% { | ||||||
|  |                 transform: translateY(-5px); | ||||||
|  |             } | ||||||
|  |         } | ||||||
|     </style> |     </style> | ||||||
| </head> | </head> | ||||||
| <body> | <body> | ||||||
|  | @ -598,12 +710,14 @@ | ||||||
| 
 | 
 | ||||||
|         <!-- 积分专区 --> |         <!-- 积分专区 --> | ||||||
|         <div id="points" class="section-content active"> |         <div id="points" class="section-content active"> | ||||||
|             <!-- 积分换购 --> |             <!-- 积分专区tabs --> | ||||||
|             <div class="points-section"> |             <div class="points-tabs"> | ||||||
|                 <div class="points-header"> |                 <div class="points-tab active" onclick="switchPointsTab('exchange')">积分换购</div> | ||||||
|                     <div class="points-title">积分换购</div> |                 <div class="points-tab" onclick="switchPointsTab('discount')">积分优惠购</div> | ||||||
|                     <div class="points-more">查看更多 ></div> |             </div> | ||||||
|                 </div> | 
 | ||||||
|  |             <!-- 积分换购内容 --> | ||||||
|  |             <div id="exchange" class="points-content active"> | ||||||
|                 <div class="points-grid"> |                 <div class="points-grid"> | ||||||
|                     <div class="points-item"> |                     <div class="points-item"> | ||||||
|                         <div class="points-item-image">🥛</div> |                         <div class="points-item-image">🥛</div> | ||||||
|  | @ -611,7 +725,7 @@ | ||||||
|                         <div class="points-item-points">500积分</div> |                         <div class="points-item-points">500积分</div> | ||||||
|                         <div class="points-item-original">原价 ¥8</div> |                         <div class="points-item-original">原价 ¥8</div> | ||||||
|                         <div class="points-item-store">华清市场/华清超市</div> |                         <div class="points-item-store">华清市场/华清超市</div> | ||||||
|                         <button class="exchange-btn">立即换购</button> |                         <button class="exchange-btn" onclick="addToPointsCart(this)">添加到积分购物车</button> | ||||||
|                     </div> |                     </div> | ||||||
|                     <div class="points-item"> |                     <div class="points-item"> | ||||||
|                         <div class="points-item-image">🍎</div> |                         <div class="points-item-image">🍎</div> | ||||||
|  | @ -619,7 +733,7 @@ | ||||||
|                         <div class="points-item-points">800积分</div> |                         <div class="points-item-points">800积分</div> | ||||||
|                         <div class="points-item-original">原价 ¥12</div> |                         <div class="points-item-original">原价 ¥12</div> | ||||||
|                         <div class="points-item-store">新鲜市场/新鲜果园</div> |                         <div class="points-item-store">新鲜市场/新鲜果园</div> | ||||||
|                         <button class="exchange-btn">立即换购</button> |                         <button class="exchange-btn" onclick="addToPointsCart(this)">添加到积分购物车</button> | ||||||
|                     </div> |                     </div> | ||||||
|                     <div class="points-item"> |                     <div class="points-item"> | ||||||
|                         <div class="points-item-image">🥖</div> |                         <div class="points-item-image">🥖</div> | ||||||
|  | @ -627,7 +741,7 @@ | ||||||
|                         <div class="points-item-points">600积分</div> |                         <div class="points-item-points">600积分</div> | ||||||
|                         <div class="points-item-original">原价 ¥10</div> |                         <div class="points-item-original">原价 ¥10</div> | ||||||
|                         <div class="points-item-store">烘焙市场/烘焙坊</div> |                         <div class="points-item-store">烘焙市场/烘焙坊</div> | ||||||
|                         <button class="exchange-btn">立即换购</button> |                         <button class="exchange-btn" onclick="addToPointsCart(this)">添加到积分购物车</button> | ||||||
|                     </div> |                     </div> | ||||||
|                     <div class="points-item"> |                     <div class="points-item"> | ||||||
|                         <div class="points-item-image">🍵</div> |                         <div class="points-item-image">🍵</div> | ||||||
|  | @ -635,17 +749,14 @@ | ||||||
|                         <div class="points-item-points">1200积分</div> |                         <div class="points-item-points">1200积分</div> | ||||||
|                         <div class="points-item-original">原价 ¥25</div> |                         <div class="points-item-original">原价 ¥25</div> | ||||||
|                         <div class="points-item-store">茶叶市场/茶叶专营店</div> |                         <div class="points-item-store">茶叶市场/茶叶专营店</div> | ||||||
|                         <button class="exchange-btn">立即换购</button> |                         <button class="exchange-btn" onclick="addToPointsCart(this)">添加到积分购物车</button> | ||||||
|                     </div> |                     </div> | ||||||
|                 </div> |                 </div> | ||||||
|  |                 <div class="load-more-tip">下滑展示更多</div> | ||||||
|             </div> |             </div> | ||||||
| 
 | 
 | ||||||
|             <!-- 积分优惠购 --> |             <!-- 积分优惠购内容 --> | ||||||
|             <div class="points-section"> |             <div id="discount" class="points-content"> | ||||||
|                 <div class="points-header"> |  | ||||||
|                     <div class="points-title">积分优惠购</div> |  | ||||||
|                     <div class="points-more">查看更多 ></div> |  | ||||||
|                 </div> |  | ||||||
|                 <div class="points-grid"> |                 <div class="points-grid"> | ||||||
|                     <div class="points-item"> |                     <div class="points-item"> | ||||||
|                         <div class="points-item-image">🥩</div> |                         <div class="points-item-image">🥩</div> | ||||||
|  | @ -653,7 +764,7 @@ | ||||||
|                         <div class="points-item-points">300积分+¥45</div> |                         <div class="points-item-points">300积分+¥45</div> | ||||||
|                         <div class="points-item-original">原价 ¥68</div> |                         <div class="points-item-original">原价 ¥68</div> | ||||||
|                         <div class="points-item-store">华清市场/华清肉店</div> |                         <div class="points-item-store">华清市场/华清肉店</div> | ||||||
|                         <button class="exchange-btn">立即购买</button> |                         <button class="exchange-btn" onclick="addToPointsCart(this)">添加到积分购物车</button> | ||||||
|                     </div> |                     </div> | ||||||
|                     <div class="points-item"> |                     <div class="points-item"> | ||||||
|                         <div class="points-item-image">🍯</div> |                         <div class="points-item-image">🍯</div> | ||||||
|  | @ -661,7 +772,7 @@ | ||||||
|                         <div class="points-item-points">200积分+¥35</div> |                         <div class="points-item-points">200积分+¥35</div> | ||||||
|                         <div class="points-item-original">原价 ¥48</div> |                         <div class="points-item-original">原价 ¥48</div> | ||||||
|                         <div class="points-item-store">农家市场/农家特产</div> |                         <div class="points-item-store">农家市场/农家特产</div> | ||||||
|                         <button class="exchange-btn">立即购买</button> |                         <button class="exchange-btn" onclick="addToPointsCart(this)">添加到积分购物车</button> | ||||||
|                     </div> |                     </div> | ||||||
|                     <div class="points-item"> |                     <div class="points-item"> | ||||||
|                         <div class="points-item-image">🧀</div> |                         <div class="points-item-image">🧀</div> | ||||||
|  | @ -669,7 +780,7 @@ | ||||||
|                         <div class="points-item-points">500积分+¥25</div> |                         <div class="points-item-points">500积分+¥25</div> | ||||||
|                         <div class="points-item-original">原价 ¥45</div> |                         <div class="points-item-original">原价 ¥45</div> | ||||||
|                         <div class="points-item-store">进口市场/进口食品店</div> |                         <div class="points-item-store">进口市场/进口食品店</div> | ||||||
|                         <button class="exchange-btn">立即购买</button> |                         <button class="exchange-btn" onclick="addToPointsCart(this)">添加到积分购物车</button> | ||||||
|                     </div> |                     </div> | ||||||
|                     <div class="points-item"> |                     <div class="points-item"> | ||||||
|                         <div class="points-item-image">🍫</div> |                         <div class="points-item-image">🍫</div> | ||||||
|  | @ -677,9 +788,10 @@ | ||||||
|                         <div class="points-item-points">400积分+¥18</div> |                         <div class="points-item-points">400积分+¥18</div> | ||||||
|                         <div class="points-item-original">原价 ¥32</div> |                         <div class="points-item-original">原价 ¥32</div> | ||||||
|                         <div class="points-item-store">甜品市场/甜品屋</div> |                         <div class="points-item-store">甜品市场/甜品屋</div> | ||||||
|                         <button class="exchange-btn">立即购买</button> |                         <button class="exchange-btn" onclick="addToPointsCart(this)">添加到积分购物车</button> | ||||||
|                     </div> |                     </div> | ||||||
|                 </div> |                 </div> | ||||||
|  |                 <div class="load-more-tip">下滑展示更多</div> | ||||||
|             </div> |             </div> | ||||||
|         </div> |         </div> | ||||||
| 
 | 
 | ||||||
|  | @ -937,6 +1049,12 @@ | ||||||
|         </div> |         </div> | ||||||
|     </div> |     </div> | ||||||
| 
 | 
 | ||||||
|  |     <!-- 悬浮购物车图标 --> | ||||||
|  |     <div class="floating-cart" id="floatingCart" onclick="goToPointsCart()"> | ||||||
|  |         <div class="cart-badge hidden" id="cartBadge">0</div> | ||||||
|  |         🛒 | ||||||
|  |     </div> | ||||||
|  | 
 | ||||||
|     <script> |     <script> | ||||||
|         // 页面切换功能 |         // 页面切换功能 | ||||||
|         function switchTab(tabName) { |         function switchTab(tabName) { | ||||||
|  | @ -959,6 +1077,27 @@ | ||||||
|             event.target.classList.add('active'); |             event.target.classList.add('active'); | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|  |         // 积分专区tab切换功能 | ||||||
|  |         function switchPointsTab(tabName) { | ||||||
|  |             // 隐藏所有积分内容 | ||||||
|  |             const contents = document.querySelectorAll('.points-content'); | ||||||
|  |             contents.forEach(content => { | ||||||
|  |                 content.classList.remove('active'); | ||||||
|  |             }); | ||||||
|  |              | ||||||
|  |             // 移除所有积分标签的激活状态 | ||||||
|  |             const tabs = document.querySelectorAll('.points-tab'); | ||||||
|  |             tabs.forEach(tab => { | ||||||
|  |                 tab.classList.remove('active'); | ||||||
|  |             }); | ||||||
|  |              | ||||||
|  |             // 显示选中的积分内容 | ||||||
|  |             document.getElementById(tabName).classList.add('active'); | ||||||
|  |              | ||||||
|  |             // 激活选中的积分标签 | ||||||
|  |             event.target.classList.add('active'); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|         // 页面跳转功能 |         // 页面跳转功能 | ||||||
|         function goToPage(page) { |         function goToPage(page) { | ||||||
|             switch(page) { |             switch(page) { | ||||||
|  | @ -982,12 +1121,82 @@ | ||||||
|             window.location.href = '电商首页.html'; |             window.location.href = '电商首页.html'; | ||||||
|         }); |         }); | ||||||
| 
 | 
 | ||||||
|         // 积分换购/购买按钮 |         // 积分购物车功能 | ||||||
|         document.querySelectorAll('.exchange-btn').forEach(btn => { |         let pointsCartCount = 0; | ||||||
|             btn.addEventListener('click', function() { | 
 | ||||||
|                 alert('跳转到商品详情页'); |         function addToPointsCart(button) { | ||||||
|             }); |             // 获取商品名称 | ||||||
|         }); |             const itemElement = button.closest('.points-item'); | ||||||
|  |             const itemName = itemElement.querySelector('.points-item-name').textContent; | ||||||
|  |              | ||||||
|  |             // 增加购物车数量 | ||||||
|  |             pointsCartCount++; | ||||||
|  |              | ||||||
|  |             // 更新购物车徽章 | ||||||
|  |             updateCartBadge(); | ||||||
|  |              | ||||||
|  |             // 触发购物车动效 | ||||||
|  |             const cartIcon = document.getElementById('floatingCart'); | ||||||
|  |             cartIcon.classList.add('bounce'); | ||||||
|  |              | ||||||
|  |             // 移除动效类 | ||||||
|  |             setTimeout(() => { | ||||||
|  |                 cartIcon.classList.remove('bounce'); | ||||||
|  |             }, 600); | ||||||
|  |              | ||||||
|  |             // 显示添加成功提示 | ||||||
|  |             showAddToCartSuccess(itemName); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         function updateCartBadge() { | ||||||
|  |             const badge = document.getElementById('cartBadge'); | ||||||
|  |             badge.textContent = pointsCartCount; | ||||||
|  |              | ||||||
|  |             if (pointsCartCount > 0) { | ||||||
|  |                 badge.classList.remove('hidden'); | ||||||
|  |             } else { | ||||||
|  |                 badge.classList.add('hidden'); | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         function showAddToCartSuccess(itemName) { | ||||||
|  |             // 创建临时提示元素 | ||||||
|  |             const toast = document.createElement('div'); | ||||||
|  |             toast.style.cssText = ` | ||||||
|  |                 position: fixed; | ||||||
|  |                 top: 50%; | ||||||
|  |                 left: 50%; | ||||||
|  |                 transform: translate(-50%, -50%); | ||||||
|  |                 background: rgba(0, 0, 0, 0.8); | ||||||
|  |                 color: white; | ||||||
|  |                 padding: 12px 24px; | ||||||
|  |                 border-radius: 25px; | ||||||
|  |                 font-size: 14px; | ||||||
|  |                 z-index: 2000; | ||||||
|  |                 opacity: 0; | ||||||
|  |                 transition: opacity 0.3s ease; | ||||||
|  |             `; | ||||||
|  |             toast.textContent = `${itemName} 已添加到积分购物车`; | ||||||
|  |              | ||||||
|  |             document.body.appendChild(toast); | ||||||
|  |              | ||||||
|  |             // 显示提示 | ||||||
|  |             setTimeout(() => { | ||||||
|  |                 toast.style.opacity = '1'; | ||||||
|  |             }, 100); | ||||||
|  |              | ||||||
|  |             // 3秒后移除提示 | ||||||
|  |             setTimeout(() => { | ||||||
|  |                 toast.style.opacity = '0'; | ||||||
|  |                 setTimeout(() => { | ||||||
|  |                     document.body.removeChild(toast); | ||||||
|  |                 }, 300); | ||||||
|  |             }, 3000); | ||||||
|  |         } | ||||||
|  | 
 | ||||||
|  |         function goToPointsCart() { | ||||||
|  |             alert('跳转到积分购物车页面'); | ||||||
|  |         } | ||||||
| 
 | 
 | ||||||
|         // 秒杀按钮 |         // 秒杀按钮 | ||||||
|         document.querySelectorAll('.seckill-btn').forEach(btn => { |         document.querySelectorAll('.seckill-btn').forEach(btn => { | ||||||
|  | @ -1004,4 +1213,4 @@ | ||||||
|         }); |         }); | ||||||
|     </script> |     </script> | ||||||
| </body> | </body> | ||||||
| </html> | </html> | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue