#跟着晓明学鸿蒙# FormLink组件实现商品详情基础布局
·
目录
- 案例介绍
- 代码实现
- 代码详解
- 数据结构设计
- 页面布局结构
- 样式处理
- 总结
案例介绍
本篇文章将介绍如何使用FormLink组件构建商品详情页的基础布局,包括顶部导航栏、图片轮播和基本信息展示等功能的实现。
代码实现
import router from '@ohos.router';
@Entry
@Component
struct ProductDetailDemo {
// 产品信息
private productInfo = {
id: '12345',
name: '智能手表 Pro',
price: 1299,
originalPrice: 1599,
sales: 2543,
rating: 4.8,
commentCount: 356,
images: [
'/common/images/product1.jpg',
'/common/images/product2.jpg',
'/common/images/product3.jpg'
],
colors: ['黑色', '银色', '金色'],
sizes: ['42mm', '46mm'],
features: [
'高清AMOLED显示屏',
'心率监测',
'血氧监测',
'睡眠监测',
'50米防水',
'长达14天续航'
],
description: '这是一款功能强大的智能手表,配备高清AMOLED显示屏,支持心率、血氧、睡眠监测等多种健康功能,同时具备50米防水和长达14天的超长续航。'
}
// 当前选中的颜色和尺寸
@State selectedColor: string = '黑色'
@State selectedSize: string = '42mm'
build() {
Column() {
// 顶部导航栏
Row() {
Image($r('app.media.ic_back'))
.width(24)
.height(24)
.margin({ right: 16 })
.onClick(() => {
router.back();
})
Text('产品详情')
.fontSize(18)
.fontWeight(FontWeight.Medium)
Blank()
Image($r('app.media.ic_share'))
.width(24)
.height(24)
.margin({ right: 16 })
Image($r('app.media.ic_more'))
.width(24)
.height(24)
}
.width('100%')
.height(56)
.padding({ left: 16, right: 16 })
.backgroundColor('#FFFFFF')
// 产品内容区域(可滚动)
Scroll() {
Column({ space: 16 }) {
// 产品图片轮播
Swiper() {
ForEach(this.productInfo.images, (image: string) => {
Image(image)
.width('100%')
.height(300)
.objectFit(ImageFit.Cover)
})
}
.width('100%')
.height(300)
.autoPlay(true)
.interval(3000)
.indicatorStyle({
selectedColor: '#2196F3',
color: '#CCCCCC',
bottom: 16
})
// 产品基本信息
Column({ space: 8 }) {
// 价格信息
Row({ space: 8 }) {
Text(`¥${this.productInfo.price}`)
.fontSize(24)
.fontWeight(FontWeight.Bold)
.fontColor('#E53935')
Text(`¥${this.productInfo.originalPrice}`)
.fontSize(14)
.fontColor('#999999')
.decoration({ type: TextDecorationType.LineThrough })
}
// 产品名称
Text(this.productInfo.name)
.fontSize(18)
.fontWeight(FontWeight.Medium)
// 销量和评分
Row({ space: 16 }) {
Text(`销量 ${this.productInfo.sales}`)
.fontSize(14)
.fontColor('#666666')
Text(`评分 ${this.productInfo.rating}`)
.fontSize(14)
.fontColor('#666666')
Text(`评论 ${this.productInfo.commentCount}`)
.fontSize(14)
.fontColor('#666666')
}
}
.width('100%')
.padding(16)
.backgroundColor('#FFFFFF')
}
}
.width('100%')
.layoutWeight(1)
}
.width('100%')
.height('100%')
}
}
代码详解
数据结构设计
-
产品信息对象:
- 基本信息:ID、名称、价格等
- 图片数组:轮播展示的产品图片
- 规格信息:颜色、尺寸选项
- 产品特点:功能特性列表
-
状态变量:
- selectedColor:当前选中的颜色
- selectedSize:当前选中的尺寸
页面布局结构
-
顶部导航栏:
- 返回按钮和标题
- 分享和更多功能按钮
- 固定高度和背景色
-
图片轮播:
- 使用Swiper组件实现
- 自动播放和切换间隔
- 自定义指示器样式
-
基本信息区域:
- 价格显示:当前价格和原价
- 产品名称:突出显示
- 销量和评分信息
样式处理
-
颜色规范:
- 主色调:#2196F3(蓝色)
- 价格颜色:#E53935(红色)
- 文本颜色:多级灰度
-
间距规范:
- 外边距:16px
- 内边距:16px
- 元素间距:8px或16px
-
字体规范:
- 价格:24px Bold
- 标题:18px Medium
- 普通文本:14px
总结
本篇文章展示了如何构建商品详情页的基础布局:
- 设计了完整的数据结构
- 实现了顶部导航栏
- 完成了图片轮播功能
- 展示了基本商品信息
这个基础布局为后续添加更多交互功能提供了良好的结构支持。
更多推荐
所有评论(0)