微信小程序实现左右联动的菜单列表

微信小程序实现左右联动的菜单列表,第1张

实现效果如下:

实现左右联动的菜单列表,主要依靠scroll-view的是三个属性

scroll-top:设置竖向滚动条位置(可视区域最顶部到scroll-view顶部的距离);

scroll-into-view:值应为某子元素id(id不能以数字开头)。设置哪个方向可滚动,则在哪个方向滚动到该元素;

bindscroll:滚动时触发,eventdetail = {scrollLeft, scrollTop, scrollHeight, scrollWidth, deltaX, deltaY}

结构图示:

wxml:

js:

数据结构:

如果你还想实现从其他页面,点击按钮跳转到当前页面,并且列表滚动到指定项,此项在可视区域的第一个展示:

wxss:

本篇文章给大家介绍一下在微信小程序中怎么让scroll-view按照指定位置滚动,无需在写额外的js脚本,就可获得极佳的体验,希望对大家有所帮助!

背景是这样的,微信小程序有一个tab切换页面,tab切换页面有两个内容框,我是使用scroll-view进行制作,然后在切换tab页面时,相应的scroll-view里的滚动条需要置顶处理。相关学习推荐:小程序开发教程

我们可以看到官方文档描述scroll-view里有一个scroll-into-view属性,该属性的描述如下

scroll-into-view的值应为某子元素id(id不能以数字开头)。设置哪个方向可滚动,则在哪个方向滚动到该元素

那么我们可以在这个属性里大作文章,只要在scroll-view里放置一个id值为设置的一个自定义值就可以实现切换tab时,对应的内容框滚动条都自动滚到顶部,如下面代码所示,下面代码是我使用Taro小程序框架演示的,原生的也同理。

import Taro from '@Tarojs/Taro'

import { View } from '@Tarojs/components'

import { AtTabs, AtTabsPane } from 'Taro-ui'

export default class Index extends TaroComponent {

constructor () {

super(arguments)

thisstate = {

current: 0,

}

}

handleClick (value) {

thissetState({

current: value

})

}

render () {

const tabList = [{ title: '标签第一页' }, { title: '标签第二页' }, { title: '标签第三页' }]

return (

<AtTabs current={thisstatecurrent} tabList={tabList} onClick={thishandleClickbind(this)}>

<AtTabsPane current={thisstatecurrent} index={0} >

<ScrollView scrollY scrollIntoView='content-0'>

<View id='content-0'></View>

标签页一的内容

</ScrollView>

</AtTabsPane>

<AtTabsPane current={thisstatecurrent} index={1} >

<ScrollView scrollY scrollIntoView='content-1'>

<View id='content-1'></View>

标签页二的内容

</ScrollView>

</AtTabsPane>

<AtTabsPane current={thisstatecurrent} index={2} >

<ScrollView scrollY scrollIntoView='content-2'>

<View id='content-2'></View>

标签页三的内容

</ScrollView>

</AtTabsPane>

</AtTabs>

)

}

}

如第一个tab的scroll-view里放置一个id值为content-0的view,那么在切换tab页时,scroll-view会根据我们设置的scroll-into-view属性定位到子元素的id上,到达滚动条自动置顶的效果

<AtTabsPane current={thisstatecurrent} index={0} >

<ScrollView scrollY scrollIntoView='content-0'>

<View id='content-0'></View>

标签页一的内容

</ScrollView>

</AtTabsPane>

同理的,假如需要滚动条滚到最低下,把相应的子元素id放到最低下即可,例如某些聊天界面,需要定位到最新那条

<AtTabsPane current={thisstatecurrent} index={0} >

<ScrollView scrollY scrollIntoView='content-0'>

标签页一的内容

<View id='content-0'></View>

</ScrollView>

</AtTabsPane>

更多编程相关知识,请访问:编程视频!!

解题思路

1左右的结构(scroll-view)

2左侧点击的时候,要跟右侧的id对应上

3右侧上下滑动的时候,左侧的id要对应上

(右侧滑动时会产生滚动高度--scrollTop(st))

如:人气Top的高度有500 --- st>=0 && st<500

大师咖啡的高度有300 --- st>=500 && st<800

小鹿茶精选的高度有270 --- st>=800 && st<=1070

获取每个区块的高度 push到数组中[ 0 , 500 , 800 , 1070]

arr[i] < st < arr[i+1]

最近在做一个uniapp的项目的时候,碰到了一个Tab选项卡的需求,我立马就想到了曾经在视频里看到的利用swiper实现丝滑选项卡的功能。

但是很遗憾,我并没有光看就会的本事,本着遇事不决先百度的原则,就在百度找了一篇真实有用,但是有小小bug的,下面是原po地址:

uni-app使用swiper切换页面每个滑块高度自适应

懒得点的可以接着往下看哈,我也会把详细步骤以及碰到的bug贴出来。下面是我改造后的效果图

首先就是Tab选项卡的点击切换块,这里我是用了小程序自带的scroll-view来实现的,同时给该元素添加scroll-into-view属性来实现点击跟踪(其实这效果不是特别好,我期望的效果是点击这个的时候还留点位置给上一个,但是我太菜了加上为了省事所以就直接用这个了)

scroll-into-view的用法可自行查阅官方文档

接着是swiper标签块,这里因为实现都一样,所以我就直接把原博客那边的贴过来了,大家根据自己的需求更改类名及swiper-item内部的组件即可

这里有个注意点,就是要给swiper-item内部的组件(盒子)一个相同的类名,后面获取高度时需要用到。

初始数据方面,这里我也把我的初始数据贴出来,大家根据需求自行修改即可

后面的方法本来想一个个贴的,但是发现好像有点乱,所以就直接全贴出来了,里面的逻辑大伙应该能理清吧哈哈

到这里js部分也结束了,最后是css部分,我就是在这里踩坑的。原博最后面说要给swiper-item里面的组件设置一个min-height: 100%。这样设置之后就会有个问题,也就是

因此大家在初始化css数据的时候需要注意一下,这里我也把我的初始css贴出来,大家根据需求自行修改即可

到这里这一块的内容就全部结束了,噢对了关于setSwiperHeight里面获取dom元素的方法,也就是

unicreateSelectorQuery() 。这玩意说实话我也搞不太懂,总之就跟selectorQuery选择器差不多,CVM大法:复制粘贴,然后修改数据即可。

第一次正经写文还是很紧张的哈哈,希望能帮到有需要的人。谢谢各位

多级联动菜单在许多的筛选场景应用十分广泛。

先看看效果图:

menuwxml

menuwxss

menujsp

menuwxss

menujs

menuwxml

menuwxss

menujs

这里主要针对一个菜单栏进行详细讲解,其余两个原理相同。

游戏

menuwxml

这里推荐大家使用 <scroll-view></scroll-view> 组件,这样超过限定的高度的话,就可以在内部产生滚动条,整体布局不会乱。使用 <scroll></scroll> 组件的时候,记得要开启滚动的方向(scroll-y表示纵向,scroll-x表示横向),这些属性默认是关闭的。

menuwxss

注意:使用竖向滚动时,需要给<scroll-view/>一个固定高度,通过 WXSS 设置 height。

menujs

menujs部分主要的难点就是wxml和js之间的数据交互,这里很容易弄晕,尤其是对自己定义的变量弄清楚是什么意思。在这里我画了一个示意图来讲解这个难点。

最后给大家提供该项目的github项目,直接抓下来就可以打开使用,只需对显示的数据进行修改即可。

最近接触了小程序项目,虽然跟web前端有很多相似的地方但是又不尽相同微信提供了很多组件以及api,作为一个新手,还是有很多坑的

这个组件用于页面滑动,可以指定x或者y方向,使用scroll-y属性,值是true或者false

但是,在使用我发现:不论写true还是false,都能滑动除非赋值为“”

这个问题我也没弄懂,如果有大神看到,希望可以指教一下

这个是scroll-view的属性,使用效果同html中的锚点一样,页面滑动到指定位置

要想实现这个效果,scroll-view必须指定高度,并且子元素内容总高度要超过指定的高度,否则效果不生效

scroll-view为滚动视图,分为水平滚动和垂直滚动。

注意滚动视图垂直滚动时一定要设置高度否则的话scroll-view不会生效。

滚动视图常用的地方一般都是Item项比较多的界面,!

以上就是关于微信小程序实现左右联动的菜单列表全部的内容,包括:微信小程序实现左右联动的菜单列表、scroll-view里面的定位元素如何能同步滚动、微信小程序 --- 菜单(menu)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10118444.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存