商品小程序(6.商品详情)

news2025/1/18 6:12:12

目录

  • 一、获取商品详情数据
  • 二、渲染商品详情页的UI结构
    • 1、渲染轮播图区域
    • 2、实现轮播图预览效果
    • 3、渲染商品信息区域
    • 4、渲染商品详情信息
    • 5、解决商品价格闪烁的问题
  • 三、渲染详情页底部的商品导航区域
    • 1、渲染商品导航区域的UI结构
    • 2、点击跳转到购物车页面

本章主要完成商品详情页面的前端编写:主要页面为分包下的goods-detail页面

在这里插入图片描述

一、获取商品详情数据

还是先来看看后端api端口的url,以及参数,返回数据样式

在这里插入图片描述
在这里插入图片描述

请求数据前面写个很多次了,不多赘述

<script>
	export default {
		data() {
			return {
				goods_info: {}
			};
		},
		onLoad(options) {
			const goods_id = options.goods_id
			this.getGoodsDetail(goods_id)
		},
		methods: {
			getGoodsDetail(goods_id){
				const {data : res} = await uni.request({
					url: 'https://api-hmugo-web.itheima.net/api/public/v1/goods/detail?goods_id=' + goods_id,
					method: 'GET'
				})
				if(res.meta.status !== 200){
					return uni.showToast({
						title: '数据请求失败!',
						duration: 1500,
						icon: 'none',
					})
				}
				this.goods_info = res.message
			}
		}
	}
</script>

二、渲染商品详情页的UI结构

1、渲染轮播图区域

前面轮播图也是做过了,具体的一些组件中的参数也不多介绍,直接使用,鼠标悬停上去也有翻译

根据返回结果,主要变量结构中的pics 下的 pics_big大图

	<view>
		<!-- 轮播图区域 -->
		<swiper :indicator-dots="true" :autoplay="true" :interval="3000" :duration="1000" :circular="true">
			<swiper-item v-for="(item, i) in goods_info.pics" :key="i">
				<image :src="item.pics_big"></image>
			</swiper-item>
		</swiper>
	</view>

渲染UI结构

<style lang="scss">
swiper {
	height: 750rpx;
	
	image {
		width:100%;
		height:100%;
	}
}
</style>

在这里插入图片描述

2、实现轮播图预览效果

为轮播图中的image图片绑定click事件处理函数

在这里插入图片描述

在methods中定义preview事件处理函数用于点击预览大图(用uni自带的previewImage浏览图片)

			preview(i) {
				uni.previewImage({
					current: i,
					urls: this.goods_info.pics.map(x => x.pics_big)
				})
			}

点击商品轮播图图片进入预览图

在这里插入图片描述

3、渲染商品信息区域

在与轮播图同级的view下创建商品信息的UIview

		<!-- 商品信息区域 -->
		<view class="goods-info-box">
			<!-- 商品价格 -->
			<view class="price">¥{{goods_info.goods_price}}</view>
			<!-- 商品信息主体区域 -->
			<view class="goods-info-body">
				<!-- 商品的名字 -->
				<view class="goods-name">{{goods_info.goods_name}}</view>
				<!-- 收藏 -->
				<view class="favi">
					<uni-icons type="star" size="18" color="gray"></uni-icons>
					<text>收藏</text>
				</view>
			</view>
			<!-- 运费 -->
			<view class="yf">快递: 免运费</view>
		</view>

美化UI

.goods-info-box {
	padding: 10px;
	padding-right: 0;
	
	.price {
		color: #C00000;
		font-size: 18px;
		margin: 10px 0;
	}
	.goods-info-body {
		display: flex;
		justify-content: space-between;
		
		.goods-name{
			font-size: 13px;
			margin-right: 10px;
		}
		
		.favi{
			width: 120px;
			font-size: 12px;
			display: flex;
			flex-direction: column;
			align-items: center;
			justify-content: center;
			border-left: 1px solid #efefef;
			color: gray;
		}
	}
	.yf{
		font-size: 12px;
		color: gray;
		margin: 10px 0;
	}
}

在这里插入图片描述

4、渲染商品详情信息

在页面结构中,使用rich-text组件,将带有html标签的内容渲染为小程序的页面结构(轮播图,商品详情的同级)

		<!-- 商品详情信息 -->
		<rich-text :node="goods_info.goods_introduce"></rich-text>

修改getGoodsDetail方法,从而解决图片底部空白间隙的问题
在这里插入图片描述

解决.webp格式图片在ios设备无法正常显示问题

在这里插入图片描述

在这里插入图片描述

5、解决商品价格闪烁的问题

在这里插入图片描述

三、渲染详情页底部的商品导航区域

1、渲染商品导航区域的UI结构

基于uni-ui提供的goodsnav组件来实现商品导航区域的效果

在data中,通过options和buttongroup两个数组,来声明商品导航组件的按钮配置对象:

		data() {
			return {
				goods_info: {},
				// 左侧按钮组的配置对象
				options: [{
					icon: 'shop',
					text: '店铺'
				}, {
					icon: 'cart',
					text: '购物车',
					info: 2
				}],
				// 右侧按钮组的配置对象
				buttonGroup: [{
					text: '加入购物车',
					backgroundColor: '#ff0000',
					color: '#fff'
				}, {
					text: '立即购买',
					backgroundColor: '#ffa200',
					color: '#fff'					
				}]
			};
		},

使用uni-goods-nav商品导航组件

		<!-- 商品导航组件区域 -->
		<view class="goods_nav">
			<uni-goods-nav :fill="true"  :options="options" :buttonGroup="buttonGroup"  @click="onClick" @buttonClick="buttonClick" />
		</view>

美化商品导航,并使他固定在底部

.goods_nav {
	position: fixed;
	bottom: 0;
	left: 0;
	width: 100%;
}

在这里插入图片描述

2、点击跳转到购物车页面

在这里插入图片描述
点击左下角购物车按钮,跳转购物车页面

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1357999.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

推荐一款加速器,也可加速github

地址https://github.com/BeyondDimension/SteamTools

【ZYNQ入门】第五篇、AXI HP口读写数据原理

目录 第一部分、AXI总线的相关知识 1、ZYNQ架构 2、AXI 总线和 AXI 接口以及 AXI 协议 3、AXI 总线与 ZYNQ 的关系 4、AXI 总线介绍 5、AXI 接口介绍 6、AXI 协议介绍 7、AXI高效传输的原因 8、常见总线汇总 9、HP接口写时序配置 10、HP DDR的地址分配 11、缓存一…

监控各大电商平台商品价格,库存信息,数据分析,京东SKU详情

要接入API接口以采集电商平台上的商品数据&#xff0c;可以按照以下步骤进行&#xff1a; 1、找到可用的API接口&#xff1a;首先&#xff0c;需要找到支持查询商品信息的API接口。这些信息通常可以在电商平台的官方文档或开发者门户网站上找到。 2、注册并获取API密钥&#x…

2023春季李宏毅机器学习笔记 06 :Diffusion Model 原理剖析

资料 课程主页&#xff1a;https://speech.ee.ntu.edu.tw/~hylee/ml/2023-spring.phpGithub&#xff1a;https://github.com/Fafa-DL/Lhy_Machine_LearningB站课程&#xff1a;https://space.bilibili.com/253734135/channel/collectiondetail?sid2014800 一、想法概念 Q1&…

解读IPD产品需求管理流程

在IPD体系下&#xff0c;产品投资组合管理的例行活动首先表现在对客户需求的快速响应上。这包括需求的收集、分析与决策、研发实现等端到端等业务流。需求管理本质上是一条“从客户中来到客户中去”的业务流。为了高效地协同各个部门&#xff0c;更好地管理客户需求被满足的全过…

美格智能5G RedCap模组SRM813Q通过广东联通5G创新实验室测试认证

近日&#xff0c;美格智能5G RedCap轻量化模组SRM813Q正式通过广东联通5G创新实验室端到端的测试验收&#xff0c;获颁测评证书。美格智能已连续通过业内两家权威实验室的测试认证&#xff0c;充分验证SRM813Q系列模组已经具备了成熟的商用能力&#xff0c;将为智慧工业、安防监…

PPI+机器学习+免疫浸润+实验验证,如此简单也能发4+

今天给同学们分享一篇生信文章“Identification of metabolic biomarkers associated with nonalcoholic fatty liver disease”&#xff0c;这篇文章发表在Lipids Health Dis期刊上&#xff0c;影响因子为4.5。 结果解读&#xff1a; 识别NAFLD患者的MR DEG 主成分分析&…

2023 波卡年度报告选读:Polkadot SDK 与开发者社区

原文&#xff1a;https://dashboards.data.paritytech.io/reports/2023/index.html#section6 编译&#xff1a;OneBlock 编者注&#xff1a;Parity 数据团队发布的 2023 年 Polkadot 年度数据报告&#xff0c;对推动生态系统的关键数据进行了深入分析。报告全文较长&#xff…

【数据库原理】(7)关系数据库的完整性约束

关系模型的完整性规则是为了确保数据的唯一性和数据之间的关系的准确性。 有三类完整性约束:实体完整性、参照完整性和用户定义完整性。 其中实体完整性和参照完整性是必须满足的完整性约束条件,应该由关系系统自动支持。 实体完整性 实体完整性的核心概念 唯一性&#xf…

Excel如何将单元格设为文本

文章目录 一、打开excel文件二、选中单元格三、右键设置单元格格式四、设置界面选择文本后点确定五、其他问题 在caa开发过程中遇到从CATUnicodeString转成CString时&#xff0c;通过SetItemText写入将ID号写入单元格&#xff0c;无法保存ID号中的数字0&#xff0c;故将单元格格…

【EI会议征稿通知】2024年第九届智能计算与信号处理国际学术会议(ICSP 2024)

2024年第九届智能计算与信号处理国际学术会议&#xff08;ICSP 2024&#xff09; 2024年第八届智能计算与信号处理国际学术会议&#xff08;ICSP 2024&#xff09;将在西安举行&#xff0c; 会期是2024年4月19-21日&#xff0c; 为期三天, 会议由西安科技大学主办。 欢迎参会&…

AI无人直播系统怎么样?三点说明

近年来&#xff0c;因为科技的高速进步&#xff0c;不断涌现出了越来越多的新技术和创新事物&#xff0c;它们以其独特的方式取代了我们的许多传统做法&#xff0c;从而彻底解放了我们的双手。在这股潮流中&#xff0c;无人直播作为一种创新形式&#xff0c;使得直播变得更加简…

使用Go语言编写高效的HTTP服务器

随着互联网的快速发展&#xff0c;HTTP服务器在Web开发中扮演着越来越重要的角色。而Go语言作为一种高效、并发性强的编程语言&#xff0c;为编写高性能的HTTP服务器提供了强大的支持。本文将探讨如何使用Go语言编写高效的HTTP服务器。 首先&#xff0c;我们需要了解Go语言的H…

【nginx】linux(centos版本)安装nginx

目录 一、下载安装包1.1 官网下载1.2 linux命令下载 二、安装2.1 安装依赖包2.2 安装nginx 三、启动四、访问五、关停六、重载配置 一、下载安装包 1.1 官网下载 1.官网地址 https://nginx.org/en/download.html2.版本说明 1.Mainline version-主线版本 2.Stable version-稳…

OpenAI ChatGPT-4开发笔记2024-03:Chat之Function Calling/Function/Tool/Tool_Choice

Updates on Function Calling were a major highlight at OpenAI DevDay. In another world,原来的function call都不再正常工作了&#xff0c;必须全部重写。 function和function call全部由tool和tool_choice取代。2023年11月之前关于function call的代码都准备翘翘。 干嘛…

前端常用的几种算法的特征、复杂度、分类及用法示例演示

算法&#xff08;Algorithm&#xff09;可以理解为有基本运算及规定的运算顺序所构成的完整的解题步骤&#xff0c;或者看成按照要求设计好的有限的确切的计算序列&#xff0c;并且这样的步骤和序列可以解决一类问题。算法代表着用系统的方法描述解决问题的策略机制&#xff0c…

零信任(Zero Trust):理论与实践

零信任 &#xff08;Zero Trust&#xff09; 网络安全原则强调在组织内外始终不假设信任&#xff0c;并要求对每一个通信尝试进行严格的验证。无论是来自外部的访问请求还是内部网络的数据访问&#xff0c;零信任模型均要求对其进行细致的审查。 用一个简洁的口号来概括&#…

【JaveWeb教程】(1)Web前端基础:HTML+CSS入门不再难:一篇文章教你轻松搞定HTML与CSS!

目录 1. 前端开发介绍2. HTML & CSS2.1 HTML快速入门2.1.1 操作2.1.2 总结 2.2 开发工具2.3 基础标签 & 样式2.3.1 新浪新闻-标题实现2.3.1.1 标题排版2.3.1.1.1 分析2.3.1.1.2 标签2.3.1.1.2 实现 2.3.1.2 标题样式2.3.1.2.1 CSS引入方式2.3.1.2.2 颜色表示2.3.1.2.3 …

域传送漏洞

DNS解析 当用户访问域名时浏览器解析首先会查看浏览器缓存是否有对应的ip&#xff0c;如果没有则会到本地host文件中查看是否有对应的ip&#xff0c;如果没用则会将域名发送给本地区的DNS服务器. DNS服务器分为递归服务器&#xff0c;根服务器&#xff0c;权威服务器 首先是递…

695岛屿最大面积

题目 给定一个 row x col 的二维网格地图 grid &#xff0c;其中&#xff1a;grid[i][j] 1 表示陆地&#xff0c; grid[i][j] 0 表示水域。 网格中的格子 水平和垂直 方向相连&#xff08;对角线方向不相连&#xff09;。整个网格被水完全包围&#xff0c;但其中恰好有一个…