商城小程序(3.分类页面)

效果展示:并实现左右栏的上下滑动
在这里插入图片描述

一、渲染分类页面的基本结构

1、基本结构

首先设置左右两栏滑动区域

主要用到scroll-view组件定义可滚动视图
在这里插入图片描述

其中scroll-y -x 用于定义横向还是纵向滑动
在这里插入图片描述

	<view>
		<view class="scroll-view-container">
			<!-- 左侧的滑动区域 -->
			<scroll-view class="left-scroll-view" scroll-y="true" :style="{height: wh + 'px'}">
				<view>11111111</view>
				<view>11111111</view>
				<view>11111111</view>
				<view>11111111</view>
				<view>11111111</view>
				<view>11111111</view>
				<view>11111111</view>
				<view>11111111</view>
				<view>11111111</view>
				<view>11111111</view>
				<view>11111111</view>
				<view>11111111</view>
				<view>11111111</view>
				<view>11111111</view>
				<view>11111111</view>
				<view>11111111</view>
				<view>11111111</view>
			</scroll-view>
			<!-- 右侧的滑动区域 -->
			<scroll-view scroll-y="true" :style="{height: wh + 'px'}">
				<view>11111111</view>
				<view>11111111</view>
				<view>11111111</view>
				<view>11111111</view>
				<view>11111111</view>
				<view>11111111</view>
				<view>11111111</view>
				<view>11111111</view>
				<view>11111111</view>
				<view>11111111</view>
				<view>11111111</view>
				<view>11111111</view>
				<view>11111111</view>
				<view>11111111</view>
				<view>11111111</view>
				<view>11111111</view>
				<view>11111111</view>
				<view>11111111</view>
			</scroll-view>
		</view>
	</view>

2、自动适应屏幕

用到uni自带的api获取系统信息
在这里插入图片描述

定义onload加载信息,并赋值给高度

<script>
	export default {
		data() {
			return {
				// 当前设备可用高度
				wh: 0
			}
		},
		onLoad() {
			const sysInfo = uni.getSystemInfoSync()
			this.wh = sysInfo.windowHeight
		}
	}
</script>

把页面高度动态绑定

			<scroll-view scroll-y="true" :style="{height: wh + 'px'}">

3、界面细化

左侧滑动区域我们都可以先给个名来设计我们的样式

active表示当前选中的(这边后面再改动态,我们先设计样式)
在这里插入图片描述

style下css样式,具体的含义就不展示了。

主要注意&的使用,表示同时满足上目录与当前拼接时才会触发下面的样式(就是我们的第一栏left-scroll-view-item-active)

.scroll-view-container{
	display: flex;
	
	.left-scroll-view{
		width: 120px;
		
		.left-scroll-view-item{
			background-color: #F7F7F7;
			line-height: 60px;
			text-align: center;
			font-size: 12px;
			
			&.active {
				background-color: #FFFFFF;
				position: relative;
				
				&::before{
					content: ' ';
					display: block;
					width: 3px;
					height: 30px;
					background-color: #C00000;
					position: absolute;
					top: 50%;
					left: 0;
					transform: translateY(-50%);
				}
			}
		}
	}
}

在这里插入图片描述

二、获取分类数据

同之前一样 分为3步骤
在这里插入图片描述

		methods: {
			// 获取分类列表数据
			async getCateList() {
				const {data : res} = await uni.request({
					url: 'https://api-hmugo-web.itheima.net/api/public/v1/categories',
					method: 'GET'
				})
				if(res.meta.status !== 200){
					return uni.showToast({
						title: '数据请求失败!',
						duration: 1500,
						icon: 'none',
					})
				}
				this.cateList = res.message
				uni.$showMsg('数据请求成功!')
			}
		}

三、动态渲染左侧的一级分类列表

将左侧滑动数据改为动态获取:从catelist中获取数据,用for循环遍历

			<!-- 左侧的滑动区域 -->
			<scroll-view class="left-scroll-view" scroll-y="true" :style="{height: wh + 'px'}">
				<block v-for="(item, i) in cateList" :key="i">
					<view :class="['left-scroll-view-item', i=== active ? 'active' : '']" @click="activeChanged(i)">
						{{item.cat_name}}</view>
				</block>
			</scroll-view>

其中要实现之前的点击事件,选中的栏位样式与其他框不同

定义active值,并与动态索引key i绑定(调用cativeChanged方法)
在这里插入图片描述
实现动态展示数据,以及点击事件切换样式

在这里插入图片描述

四、渲染二级分类列表

先来看看后端接口返回的数据格式:一级分类的数据children下保存的是二级分类信息,二级分类

的children下又保存三级分类的信息
在这里插入图片描述
用同样的方法获取数据,这次直接在获取一级分类数据的基础上,直接给二级分类赋值
在这里插入图片描述
修改点击事件:每次点击时,重新为二级分类赋值,查询当前一级目录的二级分类
在这里插入图片描述

渲染右侧二级分类列表的UI结构

			<!-- 右侧的滑动区域 -->
			<scroll-view scroll-y="true" :style="{height: wh + 'px'}">
				<view class="cate-lv2" v-for="(item2, i2) in cateList2" :key="i2">
					<view class="cate-lv2-title">/ {{item2.cat_name}} /</view>
				</view>
			</scroll-view>

美化二级分类的样式

	.cate-lv2-title {
		font-size: 12px;
		font-weight: bold;
		text-align: center;
		padding: 15px 0;
	}

在这里插入图片描述
点击切换也成功获取新的二级分类
在这里插入图片描述

五、动态渲染右侧三级分类列表

渲染三级分类的UI(直接从item2二级分类中,拿出我们的三级分类数据,并重新循环遍历)

			<!-- 右侧的滑动区域 -->
			<scroll-view scroll-y="true" :style="{height: wh + 'px'}">
				<view class="cate-lv2" v-for="(item2, i2) in cateList2" :key="i2">
					<!-- 二级分类的标题 -->
					<view class="cate-lv2-title">/ {{item2.cat_name}} /</view>
					<!-- 当前二级分类下的三级分类 -->
					<view class="cate-lv3-list">
						<!-- 三级分类的Item项 -->
						<view class="cate-lv3-item" v-for="(item3, i3) in item2.children" :key="i3">
							<!-- 三级分类的图片 -->
							<image :src="item3.cat_icon"></image>
							<!-- 三级分类的文本 -->
							<text>{{item3.cat_name}}</text>
						</view>
					</view>
				</view>
			</scroll-view>

美化样式

	.cate-lv3-list {
		display: flex;
		flex-wrap: wrap;
		
		.cate-lv3-item {
			width: 33.33%;
			display: flex;
			flex-direction: column;
			justify-content: center;
			align-items: center;
			margin-bottom: 10px;
			
			image {
				width: 60px;
				height: 60px;
			}
			text {
				font-size: 12px;
			}
		}
	}

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

六、切换页面重置滚动条位置

在这里插入图片描述
先将右侧页面向下滚动
在这里插入图片描述
切换页面时,重新回到顶部

在这里插入图片描述

七、点击三级分类跳转到商品列表页面

在这里插入图片描述

点击商品后,有参数返回页面跳转
在这里插入图片描述

  • 22
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
商城小程序分类实现一般可以借助于CSND(Category, Subcategory, and Nested Category)的方法。CSND的核心理念是通过建立层次化的商品分类结构,使得用户能够更方便地浏览和找到所需商品。 首先,商城管理员可以在小程序后台创建一级分类,如服饰、食品、家居等,并为每个一级分类设定一个唯一的标识码。随后,管理员可以在每个一级分类下创建二级分类,如男装、女装、童装等,二级分类同样需要设定唯一标识码。如果需要,还可以在二级分类下再创建三级分类,如上衣、裤子等。这样就形成了层次化的商品分类结构。 在小程序前端界面上,用户可以通过点击一级分类跳转到对应的一级分类的商品列表页面,同时也可以在一级分类页面上查看该分类下的二级分类。点击二级分类则跳转到对应的二级分类商品列表页面,同样也可以在二级分类页面上查看该分类下的三级分类。这样不仅可以方便用户快速找到自己感兴趣的商品,也能让用户获得更全面的商品信息。 为了提供更好的用户体验,商城小程序还可以利用搜索功能来辅助分类实现。用户可以在分类页面中使用搜索框输入关键字,小程序将根据关键字在当前分类或者整个商城中搜索匹配的商品,并返回结果给用户。 通过以上的CSND分类实现,商城小程序能够更好地组织和展示商品信息,提高用户的浏览效率和购物体验。同时,商城管理员也能更灵活地管理和更新商品分类,以适应市场和用户需求的变化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值