国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

微信小程序 uniapp 電商項(xiàng)目使用scroll-view實(shí)現(xiàn)左右菜單聯(lián)動,點(diǎn)擊菜單子分類聯(lián)動對應(yīng)商品

這篇具有很好參考價(jià)值的文章主要介紹了微信小程序 uniapp 電商項(xiàng)目使用scroll-view實(shí)現(xiàn)左右菜單聯(lián)動,點(diǎn)擊菜單子分類聯(lián)動對應(yīng)商品。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

最近寫了個(gè)微信小程序項(xiàng)目,一開始不理解scroll-view用法,用的另外一種方法寫的,雖然實(shí)現(xiàn)了效果,但是代碼層面來說,不大合理,后來又通過努力,用scroll-view實(shí)現(xiàn)了效果?,F(xiàn)寫個(gè)文章做個(gè)記錄,方便自己和大家學(xué)習(xí)記錄。

效果圖請看第一張。布局:左右布局,右邊又分為上下布局。

左側(cè)是一級菜單,即為商品大類。

右上方二級菜單,是每個(gè)商品大類對應(yīng)的子類,當(dāng)點(diǎn)擊左側(cè)大類的時(shí)候,右上的子類是對應(yīng)的變化。

右下方是商品數(shù)據(jù),即每個(gè)二級菜單對應(yīng)的商品數(shù)據(jù)。右下方粉色加粗的部分是每個(gè)商品所屬的子類標(biāo)題。

不會弄動圖,我就敘述一下完整的效果是:點(diǎn)擊左側(cè)第二個(gè)大類,展示對應(yīng)的子類,默認(rèn)是高亮第一個(gè)子類,如果點(diǎn)擊右上方對應(yīng)的子類有黑色高亮效果,并且右側(cè)下方的商品滾動到該子類對應(yīng)商品的位置。如果滾動右側(cè)下方的商品數(shù)據(jù),右側(cè)上方的對應(yīng)子類會高亮,對應(yīng)的大類也會高亮。

為了避免點(diǎn)擊右上方二級分類的時(shí)候反復(fù)調(diào)接口的操作,所以后臺將所有的數(shù)據(jù)一次性返回給我。該頁面初始化加載數(shù)據(jù)只調(diào)用一次接口。然后前端自己將數(shù)據(jù)處理之后使用。

uniapp二級菜單,微信小程序uniapp,微信小程序,uni-app,小程序,vue.js

數(shù)據(jù)格式大致如下所示:?

classifyData: [{
						id:11,
						groupName: "大類1",
						children: [
							{
								id:1,
								groupName:'子類1-1',
								goodsSalesList:[
									{salesId: "101",salesName:'訂單1-1'},
									{salesId: "102",salesName:'訂單1-2'},
								]
							},
							{
								id:2,
								groupName:'子類1-2',
								goodsSalesList:[
									{salesId: "201",salesName:'訂單2-1'},
									{salesId: "202",salesName:'訂單2-2'},
								]
							}
						],
					},{
						id:22,
						groupName: "大類2",
						children: [
							{
								id:3,
								groupName:'子類2-1',
								goodsSalesList:[
									{salesId: "301",salesName:'訂單3-1'},
									{salesId: "302",salesName:'訂單3-2'},
								]
							},
							{
								id:4,
								groupName:'子類2-2',
								goodsSalesList:[
									{salesId: "401",salesName:'訂單4-1'},
									{salesId: "402",salesName:'訂單4-2'},
								]
							}
						],
					},{
						id:33,
						groupName: "大類3",
						children: [
							{
								id:5,
								groupName:'子類3-1',
								goodsSalesList:[
									{salesId: "501",salesName:'訂單5-1'},
									{salesId: "502",salesName:'訂單5-2'},
								]
							},
							{
								id:4,
								groupName:'子類2-2',
								goodsSalesList:[]
							}
						],
					},
				],

?頁面template代碼如下:

<template>
	<view class="content">
		<view class="ld">
			<view class="left">
				<view v-for="(item,index) in classifyData" :key="index" @click="setid(index)"
					:class="classifyDataIndex==index?'active':'activeDefault'">
					{{item.groupName}}
				</view>
			</view>
			<view class="right">
				<view class="stickyBox">
					<view class="beforeActive" style="display: flex;justify-content: center;">
						<template v-for="(items,index) in classifyData[classifyDataIndex].children" :key="index">
							<view class="categoryName" @click="classifyActive(index,$event,items,classifyDataIndex)"
								:class="activeClassify == index ? 'activeClass':'categoryName'" style="margin: 0 10px ;">{{items.groupName}}
							</view>
						</template>
					</view>
				</view>
				<scroll-view :scroll-y="true" style="white-space: nowrap;height: 200px;" :scroll-into-view="clickId"
					:scroll-with-animation="true" @scroll="scroll" @scrolltolower="scrolltolower ">
					<template  v-for="(classifyDataModel,classifyDataIndex) in classifyData" :key="classifyDataIndex">
							<view class="" v-for="(item,index) in classifyDataModel.children" :key='index' :class="classifyData.length==classifyDataIndex+1&&classifyDataModel.children.length==index+1?'classifyDataMinHeght':''">
								<view class="title"  :id="'Index_'+classifyDataIndex+'_'+index">
									<view class="">- {{item.groupName}} -</view>
								</view>
								<template v-if="item.goodsSalesList.length!=0">
									<view class="" v-for="(dd,ee) in item.goodsSalesList" :key='ee' style="padding:30px 0;">
										{{dd.salesName}}
									</view>
								</template>
								<template v-else>
									<view class="goods-details-box2" style="padding:30px 0;">暫無商品</view>
								</template>
							</view>
					</template>
				</scroll-view>
			</view>
		</view>
	</view>
</template>

?頁面script代碼如下:

<script>
	export default {
		data() {
			return {
				classifyData: [//數(shù)據(jù)格式
					{
						id:11,
						groupName: "大類1",
						children: [
							{
								id:1,
								groupName:'子類1-1',
								goodsSalesList:[
									{salesId: "101",salesName:'訂單1-1'},
									{salesId: "102",salesName:'訂單1-2'},
								]
							},
							{
								id:2,
								groupName:'子類1-2',
								goodsSalesList:[
									{salesId: "201",salesName:'訂單2-1'},
									{salesId: "202",salesName:'訂單2-2'},
								]
							}
						],
					},{
						id:22,
						groupName: "大類2",
						children: [
							{
								id:3,
								groupName:'子類2-1',
								goodsSalesList:[
									{salesId: "301",salesName:'訂單3-1'},
									{salesId: "302",salesName:'訂單3-2'},
								]
							},
							{
								id:4,
								groupName:'子類2-2',
								goodsSalesList:[
									{salesId: "401",salesName:'訂單4-1'},
									{salesId: "402",salesName:'訂單4-2'},
								]
							}
						],
					},{
						id:33,
						groupName: "大類3",
						children: [
							{
								id:5,
								groupName:'子類3-1',
								goodsSalesList:[
									{salesId: "501",salesName:'訂單5-1'},
									{salesId: "502",salesName:'訂單5-2'},
								]
							},
							{
								id:4,
								groupName:'子類2-2',
								goodsSalesList:[]
							}
						],
					},
				],
				clickId: "",
				classifyDataIndex: 0,//默認(rèn)展示的大類下標(biāo)
				activeClassify:0,//默認(rèn)展示的子類下標(biāo)
				RightTopArr:[],
			}
		},
		onReady() {
			this.getList(); //初始化加載
			this.getNodesInfo();
			
		},
		onLoad() {
			
		},
		methods: {
			getList() {},//此處調(diào)接口拿到數(shù)據(jù)并自行處理
			setid(i) {//點(diǎn)擊大類
				this.classifyDataIndex = i;
				this.activeClassify=0;//子類狀態(tài)
				this.clickId ='Index_'+i+'_'+0
			},
			classifyActive(index, event, items,classifyDataIndex){//點(diǎn)擊子類
				this.classifyDataIndex=classifyDataIndex;//大類狀態(tài)與下標(biāo)一致
				this.activeClassify=index;//子類狀態(tài)
				
				this.clickId='Index_'+this.classifyDataIndex+'_'+this.activeClassify;
			},
		    scroll(e) {//右側(cè)商品滾動
				let scrollTop = e.target.scrollTop;
				console.log(scrollTop,'scrollTop')
				for(let  index  in this.RightTopArr){
					let data=this.RightTopArr[index];
					if(e.target.scrollTop>=data.height && index==this.RightTopArr.length-1?true:e.target.scrollTop <this.RightTopArr[parseInt(index)+1].height){
						  let myArrData =data.id.split("_");
						   this.classifyDataIndex=myArrData[1];
						   this.activeClassify=myArrData[2];
						return ;
					}
				}
			},
			getNodesInfo() {//滾動的距離
				new Promise(resolve => {
					let selectorQuery = uni.createSelectorQuery();
					// 獲取節(jié)點(diǎn)的位置信息
					selectorQuery.selectAll('.title').boundingClientRect((rects) => {
						// 如果節(jié)點(diǎn)尚未生成,rects值為[](因?yàn)橛胹electAll,所以返回的是數(shù)組),循環(huán)調(diào)用執(zhí)行
						if (!rects.length) {
							setTimeout(() => {
								this.getNodesInfo();
							}, 10);
							return;
						}
						// 生成之后開始添加進(jìn)去數(shù)組
						rects.forEach((rect) => {
							console.log(this.RightTopArr,'this.RightTopArr')
							let tops=rect.top - rects[0].top;// 這里減去rects[0].top,是因?yàn)榈谝豁?xiàng)頂部不是貼到導(dǎo)航欄=>每一個(gè)商品距離頂部的高度,如果此頁面頂部沒有其他的view那就不用減去rects[0].top,自己視情況而定。
							this.RightTopArr.push({height:tops,id:rect.id}); 
							resolve();
						})
					}).exec()
				})
			},
			// 滾動到底部/右邊,會觸發(fā) scrolltolower 事件
			scrolltolower() {
				setTimeout(() => {
					// this.classifyDataIndex = this.classifyData.length;
					console.log('滾動到底部了')
				}, 10)
			},
		}
	}
</script>

樣式代碼如下:文章來源地址http://www.zghlxwxcb.cn/news/detail-630119.html

<style lang="scss" scoped>
	.stickyBox {
		width: 80%;
		display: flex;
		background-color: #FFFFFF;
		.beforeActive {
			width: 600rpx;
			height: 85rpx;
			overflow: hidden;
			display: flex;
			justify-content: flex-start;
			flex-wrap: wrap;
			.categoryName {
				margin: 20rpx;
				padding: 10rpx;
				background-color: #E5E5E5;
				height: 30rpx;
				font-size: 20rpx;
				font-weight: 400;
				line-height: 28rpx;
				color: #333333;
				opacity: 1;
			}
	
			.activeClass {
				margin: 20rpx;
				padding: 10rpx;
				background-color: #333333;
				height: 30rpx;
				font-size: 20rpx;
				font-weight: 400;
				line-height: 28rpx;
				color: #FFFFFF;
				opacity: 1;
			}
		}
	
		.active {
			width: 600rpx;
			height: auto;
			overflow: visible;
			display: flex;
			justify-content: flex-start;
		}
	}
	
	.ld {
		display: flex;
		border: 1px solid black;

		.left {
			width: 100px;
			text-align: center;
			border-right: 1px dashed #007AFF;

		}

		.right {
			flex: 1;
			padding-left: 10px;
		}
	}

	.title {
		font-size: 20px;
		font-weight: bold;
		background-color: pink;
	}
	.activeDefault{
		height: 50px;
		display: flex;
		flex-direction: column;
		align-items: center;
		justify-content: center;
	}
	.active {
		background-color: darkgoldenrod;
		height: 50px;
		display: flex;
		    flex-direction: column;
		    align-items: center;
		    color: #ffffff;
		    justify-content: center;
	}
.classifyDataMinHeght{
		min-height: 100vh;
	}
</style>

到了這里,關(guān)于微信小程序 uniapp 電商項(xiàng)目使用scroll-view實(shí)現(xiàn)左右菜單聯(lián)動,點(diǎn)擊菜單子分類聯(lián)動對應(yīng)商品的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 電商商城小程序項(xiàng)目完整源碼(微信小程序)

    電商商城小程序項(xiàng)目完整源碼(微信小程序)

    微信公眾號:創(chuàng)享日記 發(fā)送:簡商城 獲取完整源碼(導(dǎo)入微信開發(fā)者工具即可) 【ChatGPT】前些天發(fā)現(xiàn)了一個(gè)巨牛的人工智能學(xué)習(xí)電子書,通俗易懂,風(fēng)趣幽默,無廣告,忍不住分享一下給大家。(點(diǎn)擊查看學(xué)習(xí)資料) 1、首頁 點(diǎn)擊輪播圖可以跳轉(zhuǎn)詳情頁 點(diǎn)擊專享禮包可以

    2024年02月11日
    瀏覽(24)
  • UniApp項(xiàng)目中 使用微信小程序原生語言 進(jìn)行開發(fā)

    UniApp項(xiàng)目中 使用微信小程序原生語言 進(jìn)行開發(fā)

    wxcomponents 下放的是微信小程序原生代碼寫的組件。我進(jìn)行了封裝 在你下uniApp 項(xiàng)目的根目錄創(chuàng)建一個(gè) wxcomponents 名字千萬不要錯(cuò) 京東、支付寶燈參考下面圖片 官方文檔也有介紹 然后在你需要引入原生功能的頁面里面引入你的組件(我這里提前已經(jīng)放過來了。在上面圖可看到

    2024年02月04日
    瀏覽(100)
  • 微信小程序 scroll-view組件的基本使用

    微信小程序 scroll-view組件的基本使用

    ?scroll-view 組件 其實(shí)和view組件很像,結(jié)合上節(jié)課的內(nèi)容我們接著嘗試教大家一下這個(gè)組件怎么使用,現(xiàn)實(shí)中這個(gè)組件能實(shí)現(xiàn)的效果又有那些 ?上圖是CSDN的一個(gè)私聊窗口界面,我么看圖就能想象的到,左邊的聊天對像窗口是不是可以滾動的,這時(shí)候小程序就可以通過scroll-vie

    2024年02月01日
    瀏覽(88)
  • 微信小程序項(xiàng)目實(shí)例源碼——本地電商平臺小程序

    微信小程序項(xiàng)目實(shí)例源碼——本地電商平臺小程序

    該微信小程序項(xiàng)目使用了 vant ui 組件庫,項(xiàng)目頁面完整、功能全部有效! 本項(xiàng)目為小程序前端項(xiàng)目,可以直接導(dǎo)入微信開發(fā)者工具中打開,可用于計(jì)算機(jī)專業(yè)的課程設(shè)計(jì)、畢設(shè)項(xiàng)目,也可作為商用小程序的前端頁面模板。 2.1 首頁 在首頁中使用了輪播圖作為頭部 banner 廣告,

    2024年02月10日
    瀏覽(24)
  • 使用VS Code創(chuàng)建編寫uniapp項(xiàng)目(vue3+ts 微信小程序)

    使用VS Code創(chuàng)建編寫uniapp項(xiàng)目(vue3+ts 微信小程序)

    uni-create-view :用于快速創(chuàng)建 uni-app 頁面 uni-helper uni-app :代碼提示 uniapp 小程序擴(kuò)展 :鼠標(biāo)懸停查文檔 1.在types屬性中添加屬性名?@types/wechat-miniprogram 和 ?@uni-helper/uni-app-types. 2.添加vueCompilerOptions選項(xiàng) ①在VS Code中找到設(shè)置 ②在設(shè)置中搜索文件關(guān)聯(lián) ③添加這兩個(gè)文件名,值為

    2024年04月27日
    瀏覽(102)
  • uniapp vue3 微信小程序 項(xiàng)目中使用 websocet、微信小程序真機(jī)調(diào)試 websocket 報(bào)錯(cuò) errMsg: “Invalid HTTP status.“

    uniapp-websocket官方文檔 注意點(diǎn):需要在確定建立連接后才能去發(fā)送數(shù)據(jù) 這個(gè)錯(cuò)誤通常是因?yàn)樾〕绦?WebSocket 請求的地址沒有配置為 HTTPS,而是使用了 HTTP,因此需要注意以下幾點(diǎn): 小程序開發(fā)者工具可以支持使用 ws:// 前綴的 WebSocket 地址,但在真機(jī)上會因?yàn)椴话踩脑蚨鵁o

    2024年01月17日
    瀏覽(45)
  • 【微信小程序】動態(tài)修改page的wxss樣式/scroll-view使用/監(jiān)聽子組件

    靜態(tài)寫法 直接使用下面的寫法,是靜態(tài)的。 動態(tài)寫法 在wxml最外層套一個(gè)自己定義的page的class。 如果想修改.page的樣式,再用普通的動態(tài)class判斷改變就可以了。 例如:改變背景顏色 參考:微信小程序如何動態(tài)修改page標(biāo)簽的css樣式 設(shè)置id時(shí)需要注意下:id 的設(shè)置要求是字母

    2024年02月05日
    瀏覽(93)
  • 微信小程序使用scroll-view導(dǎo)致吸頂無效或vant-sticky吸頂無效

    我們先清楚為什么要使用scroll-view? 在做回到頂部時(shí),需要拿到實(shí)時(shí)的滾動距離,這時(shí)候就得使用上scroll-view了 記錄一次在做 微信小程序開發(fā)時(shí),在沒有使用scroll-view的時(shí)候,我們使用vant-sticky做吸頂效果的時(shí)候可以正常使用。 但是當(dāng)我們使用scroll-view時(shí),突然發(fā)現(xiàn)吸頂失效

    2024年02月09日
    瀏覽(96)
  • uniapp微信小程序(商城項(xiàng)目)

    uniapp微信小程序(商城項(xiàng)目)

    于是在跟著某站上學(xué)著做了一個(gè)小程序, 主要是為了學(xué)uniapp和vue 。某站黑馬優(yōu)購 完成的功能主要有:首頁、搜索、分類和購物車。 有人問了為什么沒有登錄、和添加訂單呢? 問的很好,下次別再問了 其實(shí)我也想跟著視頻做,但視頻是2021年的,一些uniapp的方法早就更新了,

    2024年04月27日
    瀏覽(20)
  • uniapp微信小程序項(xiàng)目啟動步驟

    uniapp微信小程序項(xiàng)目啟動步驟

    如何創(chuàng)建項(xiàng)目就不說了,可以參考該鏈接: 如何創(chuàng)建開發(fā)uniapp微信小程序項(xiàng)目?鏈接: link 這里主要記錄的是,從代碼倉庫拉取到本地后, 本地啟動運(yùn)行項(xiàng)目,遇到的問題。 1.下載項(xiàng)目 使用git bash 將代碼下載到本地 git clone https://gitlab.xx.xxxxx.com/xxxxx/wuhan-cloud-web.git 拖到HBuild

    2024年02月05日
    瀏覽(24)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包