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

uni-app —— 小程序?qū)崿F(xiàn)左右菜單聯(lián)動(dòng)

這篇具有很好參考價(jià)值的文章主要介紹了uni-app —— 小程序?qū)崿F(xiàn)左右菜單聯(lián)動(dòng)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

文章目錄

  • 前言
  • 一、示意圖
  • 二、使用步驟
    • 1.靜態(tài)頁(yè)面的布局
    • 2.模擬數(shù)據(jù)格式
    • 3.左側(cè)菜單的點(diǎn)擊效果
    • 4.右側(cè)菜單的聯(lián)動(dòng)效果
  • 三、具體實(shí)現(xiàn)代碼
    • 1.頁(yè)面結(jié)構(gòu)
    • 2.相關(guān)樣式
    • 3.業(yè)務(wù)邏輯部分

前言

今天寫出了一個(gè)新的小玩意兒,個(gè)人認(rèn)為實(shí)現(xiàn)思路與方法還算值得學(xué)習(xí),在這里分享給大家!


一、示意圖

uni-app —— 小程序?qū)崿F(xiàn)左右菜單聯(lián)動(dòng)

二、實(shí)現(xiàn)步驟與思路講解

1.靜態(tài)頁(yè)面的布局

  • 頁(yè)面的布局——在實(shí)現(xiàn)具體功能之前,我們就要考慮所要實(shí)現(xiàn)的具體功能是什么,將靜態(tài)頁(yè)面結(jié)構(gòu)搭建完成,頁(yè)面結(jié)構(gòu)的構(gòu)成,決定了后續(xù)功能的實(shí)現(xiàn)難易程度與方便度,這里我們所要實(shí)現(xiàn)的是左右菜單的聯(lián)動(dòng),這就需要用到滑動(dòng)效果,在uni-app中可利用scroll-view實(shí)現(xiàn)這一效果,相關(guān)屬性如下
屬性 類型 默認(rèn)值 說(shuō)明
scroll-x Boolean false 允許橫向滾動(dòng)
scroll-y Boolean false 允許縱向滾動(dòng)
scroll-into-view String 值應(yīng)為某子元素id(id不能以數(shù)字開頭)。設(shè)置哪個(gè)方向可滾動(dòng),則在哪個(gè)方向滾動(dòng)到該元素
@scroll EventHandle 滾動(dòng)時(shí)觸發(fā),event.detail = {scrollLeft, scrollTop, scrollHeight, scrollWidth, deltaX, deltaY}

2.模擬數(shù)據(jù)格式

數(shù)據(jù)結(jié)構(gòu)—— 沒(méi)有后臺(tái)接口的同學(xué)可以自行模擬數(shù)據(jù) ,在開發(fā)中,自行模擬數(shù)據(jù)格式的能力也至關(guān)重要。這里所需要的數(shù)據(jù)結(jié)構(gòu)應(yīng)為: 頁(yè)面整體的數(shù)據(jù)是一個(gè)數(shù)組,其中左側(cè)菜單應(yīng)為一個(gè)個(gè)的對(duì)象,其中每一個(gè)對(duì)象應(yīng)該有一個(gè)子元素 name屬性名,它的值應(yīng)為標(biāo)題的文,另外還應(yīng)有兩外一個(gè)子元素是一個(gè)數(shù)組,數(shù)組中的內(nèi)容應(yīng)為子菜單對(duì)應(yīng)的數(shù)據(jù)。

3.左側(cè)菜單的點(diǎn)擊效果

實(shí)現(xiàn)思路:

可給左側(cè)菜單一個(gè)點(diǎn)擊事件,在點(diǎn)擊中觸發(fā)scroll-view 的scroll-into-view屬性,所以這里千萬(wàn)不要忘記給子元素添加相應(yīng)的id屬性,在點(diǎn)擊相應(yīng)標(biāo)題時(shí),即可自動(dòng)切換

相應(yīng)代碼如下:

頁(yè)面屬性的設(shè)置

uni-app —— 小程序?qū)崿F(xiàn)左右菜單聯(lián)動(dòng)

左側(cè)菜單的點(diǎn)擊事件

// 左側(cè)列表菜單的點(diǎn)擊事件
			changeIndex(index) {
				this.currentIndex = index;
				this.rightScrollinto = 'tab' + index;
				if (this.currentIndex < 6) {
					this.rightScrollinto = "tab0"
				}
			 this.leftScrollinto = 'left' + index;

			},

4.右側(cè)菜單的聯(lián)動(dòng)效果

實(shí)現(xiàn)思路:

可獲得每一個(gè)子列表區(qū)塊的距離頂部的高度,那么這就涉及到要獲取具體的節(jié)點(diǎn)信息,在uni-app中相關(guān)的api可用于獲取某元素的節(jié)點(diǎn)信息,隨之聲明一個(gè)數(shù)組,將這些數(shù)據(jù)存放在一個(gè)數(shù)組中,然后判斷滑動(dòng)的高度(這就需要用到scroll-view的@scroll事件,可獲取用戶滑動(dòng)的距離)是否大于數(shù)組中的數(shù)據(jù),若大于,則將該區(qū)域的索引傳遞到左側(cè)菜單中,左側(cè)菜單移動(dòng)到對(duì)應(yīng)的索引位置即可。

相關(guān)代碼:文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-468305.html

	// 獲取右側(cè)滑動(dòng)區(qū)域每一個(gè)子區(qū)域的高度
			getTop() {
				const query = uni.createSelectorQuery().in(this);
				query.selectAll('.demo3').boundingClientRect(data => {
					// console.log("得到布局位置信息" + JSON.stringify(data));
					// console.log("節(jié)點(diǎn)離頁(yè)面頂部的距離為" + data.top);
					if (data) {
						data.map((item, index) => {
							let top = index > 0 ? this.topList[index - 1] : 0;
							top += item.height;
							this.topList.push(top);
						})
					}
					console.log(this.topList);
				}).exec();
			},
			//右側(cè)滑動(dòng)區(qū)域的滑動(dòng)事件
			rightscroll(event) {
				// console.log(event.target.scrollTop)
				let scrollTop = event.target.scrollTop
				let result = this.topList.findIndex((item,index)=>{
				   return 	 scrollTop<=item
				})
				this.currentIndex = result;
				// this.changeIndex();
			}
		},

三、具體實(shí)現(xiàn)代碼

1.頁(yè)面結(jié)構(gòu)

	<!-- 左側(cè)列表欄區(qū)域 s-->
		<view class="uni-padding-wrap uni-common-mt">
			<view class="d-flex">
				<scroll-view scroll-with-animation :scroll-top="scrollTop" 
				scroll-y="true" class="scroll-Y left-scroll"
					:scroll-into-view="rightScrollinto">
					<view @click="changeIndex(index)"  :id="'tab'+index" 
					v-for="(item,index) in listName" :key="item.id"
						:class="currentIndex == index?'active-class':''">
						{{item.name}}
					</view>
				</scroll-view>
				<scroll-view @scroll="rightscroll" scroll-with-animation :style="'height:'+scrollH+'px'"
					:scroll-top="scrollTop" scroll-y="true" class="scroll-Y right-scroll"
					:scroll-into-view="leftScrollinto">
					<view   :id="'left'+bindex" v-for="(bitem,bindex) in listName" :key="bindex" class="d-flex flex-wrap demo3">
						<view  v-for="(childItem, Aindex) in bitem.app_category_items" :key="childItem.id"
							class=" demo2 scroll-view-item uni-bg-red  demo2">
							<view class="img">
								<image :src="childItem.cover" mode="scaleToFill"></image>
							</view>
							<view class="text">
								<text>{{childItem.name}}</text>
							</view>
						</view>
					</view>

				</scroll-view>
			</view>
		</view>

2.相關(guān)樣式

.left-scroll {
		width: 30%;
		background: #f4f4f4;
		text-align: center;
	}



	.left-scroll view {
		height: 120rpx;
		line-height: 120rpx;
	}

	.right-scroll {
		width: 70%;
	}

	.right-scroll .demo2 {
		width: 33%;
		text-align:center;
		margin-top:0;
	}

	

	image {
		width: 120rpx;
		height: 120rpx;
	}

	.active-class {
		color: orange;
		background: white;
		border-top-right-radius: 10rpx;
		border-bottom-right-radius: 10rpx;
	}

3.業(yè)務(wù)邏輯部分


<script>
	import {
		getCate
	} from '../../api/cate.js';
	export default {
		data() {
			return {
				currentIndex: 0,
				listName: [],
				scrollH: 0,
				// 表明左右兩側(cè)滑動(dòng)的標(biāo)志scroll-into-view
				rightScrollinto: '',
				leftScrollinto: '',
				// 用一個(gè)數(shù)組承載每一個(gè)子區(qū)塊的距離頂部的高度
				topList: [],

			}
		},
		mounted() {
			this.getCate();
			// 使用定時(shí)器獲取區(qū)塊節(jié)點(diǎn)信息
			setTimeout(() => {
				this.getTop();
			}, 500)
		},
		onLoad() {
			// 異步獲取系統(tǒng)信息,包括屏幕高度等
			uni.getSystemInfo({
				success: (res) => {
					console.log(res);
					// #ifdef MP
					this.scrollH = res.windowHeight - uni.upx2px(88)
					// #endif
				}
			});

		},
		methods: {
			// 調(diào)用獲取分類頁(yè)數(shù)據(jù)的方法
			getCate() {
				getCate().then((response) => {
					console.log(response)
					this.listName = response.data
				})
			},
			// 左側(cè)列表菜單的點(diǎn)擊事件
			changeIndex(index) {
				this.currentIndex = index;
				this.rightScrollinto = 'tab' + index;
				if (this.currentIndex < 6) {
					this.rightScrollinto = "tab0"
				}
			 this.leftScrollinto = 'left' + index;

			},
			// 獲取右側(cè)滑動(dòng)區(qū)域每一個(gè)子區(qū)域的高度
			getTop() {
				const query = uni.createSelectorQuery().in(this);
				query.selectAll('.demo3').boundingClientRect(data => {
					// console.log("得到布局位置信息" + JSON.stringify(data));
					// console.log("節(jié)點(diǎn)離頁(yè)面頂部的距離為" + data.top);
					if (data) {
						data.map((item, index) => {
							let top = index > 0 ? this.topList[index - 1] : 0;
							top += item.height;
							this.topList.push(top);
						})
					}
					console.log(this.topList);
				}).exec();
			},
			//右側(cè)滑動(dòng)區(qū)域的滑動(dòng)事件
			rightscroll(event) {
				// console.log(event.target.scrollTop)
				let scrollTop = event.target.scrollTop
				let result = this.topList.findIndex((item,index)=>{
				   return 	 scrollTop<=item
				})
				this.currentIndex = result;
				// this.changeIndex();
			}
		},

	}
</script>

到了這里,關(guān)于uni-app —— 小程序?qū)崿F(xiàn)左右菜單聯(lián)動(dòng)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • uni-app:實(shí)現(xiàn)數(shù)字文本框,以及左右加減按鈕
  • 【Uni-App】用 uView 組件庫(kù)中的u-picker 實(shí)現(xiàn)地區(qū)的 省-市-區(qū) 三級(jí)聯(lián)動(dòng)&確認(rèn)&回顯

    【Uni-App】用 uView 組件庫(kù)中的u-picker 實(shí)現(xiàn)地區(qū)的 省-市-區(qū) 三級(jí)聯(lián)動(dòng)&確認(rèn)&回顯

    組件的引入就不多贅述了 直接看使用方法 地址我是引入的json文件數(shù)據(jù)結(jié)構(gòu)大概是這個(gè)樣子 例1 例2 做個(gè)動(dòng)態(tài)style,控制是否高亮地址 鏈接:https://pan.baidu.com/s/1_heSAGHJnTe-343fRmbOPA 提取碼:hmky 如果失效了 ,可以聯(lián)系我獲取

    2024年02月14日
    瀏覽(28)
  • uni-app根據(jù)騰訊地圖接口三級(jí)聯(lián)動(dòng)組件

    有時(shí)候很懵逼,因?yàn)樾枰玫津v訊地圖接口的三級(jí)聯(lián)動(dòng),習(xí)慣問(wèn)問(wèn)度娘,結(jié)果出來(lái)了我?guī)啄昵坝肑Q寫的,好吧,還是自己擼一個(gè)現(xiàn)在用的吧 組件使用得是uni-popup彈窗,picker-view 滑動(dòng)選擇地址 訪問(wèn)騰訊地圖接口使用的是?vue-jsonp? 在main.js引入 組件address.vue 組件只需要填寫你自

    2024年01月20日
    瀏覽(97)
  • uni-app中select下拉菜單

    uni-app中select下拉菜單

    select-lay - DCloud 插件市場(chǎng)

    2024年02月12日
    瀏覽(29)
  • 【uni-app】uni-app實(shí)現(xiàn)聊天頁(yè)面功能(小程序)——布局篇

    【uni-app】uni-app實(shí)現(xiàn)聊天頁(yè)面功能(小程序)——布局篇

    在工作中使用uni-app參與開發(fā)一個(gè)小程序,其中要寫一個(gè)簡(jiǎn)單的聊天頁(yè)面,雖然功能不多(只有一個(gè)發(fā)送文字的功能),但是其中的細(xì)節(jié)比較多,也踩過(guò)很多坑,特此記錄下來(lái)。要實(shí)現(xiàn)的頁(yè)面如圖所示,該篇主要講講如何布局(參考了很多文章之后根據(jù)頁(yè)面需求進(jìn)行一個(gè)整合)

    2024年02月05日
    瀏覽(515)
  • uni-app小程序分享功能實(shí)現(xiàn)

    通過(guò)onShareAppMessage(OBJECT) 將小程序到分享微信聊天,onShareTimeline()將小程序分享到朋友圈。 api中的參數(shù)配置參考文檔:https://uniapp.dcloud.net.cn/api/plugins/share.html#onshareappmessage 分為全局引入、單頁(yè)面引兩種方式 全局引入只需要在小程序main.js中引入一次,可以復(fù)用,便于維護(hù); 單

    2024年02月05日
    瀏覽(96)
  • 記錄--左右菜單聯(lián)動(dòng)

    記錄--左右菜單聯(lián)動(dòng)

    對(duì)于左右菜單聯(lián)動(dòng)的需求是很常見的在小程序里,主要表現(xiàn)為: 點(diǎn)擊左側(cè)的菜單欄,右側(cè)會(huì)切換到對(duì)應(yīng)的內(nèi)容區(qū)域 滑動(dòng)右側(cè)的內(nèi)容,左側(cè)會(huì)自動(dòng)切換到對(duì)應(yīng)的菜單項(xiàng) 主要利用的是 scroll-view標(biāo)簽,以及相關(guān)的一些API,可參考:uniapp.dcloud.net.cn/api/ui/node… 去獲取當(dāng)前的所有節(jié)點(diǎn)

    2024年02月19日
    瀏覽(26)
  • uni-app基于vue實(shí)現(xiàn)商城小程序

    uni-app基于vue實(shí)現(xiàn)商城小程序

    目錄 一、前言 二、功能效果圖 1.首頁(yè) 2.分類 ?3.活動(dòng) 4.我的 ?5.商品詳情 6.購(gòu)物車 三、代碼實(shí)現(xiàn) 1.項(xiàng)目結(jié)構(gòu)截圖 uni-app,Hbuilder 2.首頁(yè)源碼 3.數(shù)據(jù)模擬通訊 四、總結(jié) 參考“網(wǎng)易嚴(yán)選”小程序 項(xiàng)目采用傳統(tǒng)vue項(xiàng)目結(jié)構(gòu),即uni-app打包和運(yùn)行成小程序,使用HBuilder開發(fā)工具開發(fā)項(xiàng)

    2024年02月03日
    瀏覽(21)
  • 【uni-app微信小程序】實(shí)現(xiàn)支付功能

    實(shí)現(xiàn)微信支付功能需要在小程序后臺(tái)配置支付相關(guān)信息,并且在前端代碼中調(diào)用微信支付API進(jìn)行支付操作。好的, uni-app微信小程序?qū)崿F(xiàn)支付功能整體流程 大致如下: 注冊(cè)微信公眾平臺(tái),并完成開發(fā)者資質(zhì)認(rèn)證; 在微信商戶平臺(tái)注冊(cè)商戶賬號(hào),并完成商戶資質(zhì)認(rèn)證; 在商戶

    2024年02月13日
    瀏覽(115)
  • 微信小程序 - [完整源碼] 全屏左右菜單聯(lián)動(dòng)效果,左側(cè)分類與右側(cè)內(nèi)容聯(lián)動(dòng),類似美團(tuán)餓了么的點(diǎn)餐頁(yè)面 “左邊菜單,右邊內(nèi)容“ 效果(開箱即用的示例源碼,代碼干凈整潔且注釋詳細(xì))

    微信小程序 - [完整源碼] 全屏左右菜單聯(lián)動(dòng)效果,左側(cè)分類與右側(cè)內(nèi)容聯(lián)動(dòng),類似美團(tuán)餓了么的點(diǎn)餐頁(yè)面 “左邊菜單,右邊內(nèi)容“ 效果(開箱即用的示例源碼,代碼干凈整潔且注釋詳細(xì))

    您可能需要:微信小程序 - 外賣點(diǎn)餐的左右聯(lián)動(dòng)功能界面(購(gòu)物車加減商品,購(gòu)物車自動(dòng)計(jì)算金額等電商功能) 網(wǎng)上的教程樣式和邏輯都太亂了(而且 BUG 一堆、各種真機(jī)運(yùn)行不兼容),直接復(fù)制下來(lái)后代碼一個(gè)注釋沒(méi)有根本無(wú)法改造。 本文 實(shí)現(xiàn)了微信小程序左右聯(lián)動(dòng)菜單

    2024年02月09日
    瀏覽(38)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包