实现效果如下:
实现左右联动的菜单列表,主要依靠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)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)