好久没来帖吧了,本来这些东东,我都是发在我的兴趣吧的,但是为了帮助更多爬坑的人,我决定还是发在这里,方便别人搜索。
近期在用微信小程序,做一个项目。
这其中的坑啊,好多好多啊,忍不住要吐槽一下。
1.页面栈只能存在5个! 只能5层页面,CNMB,哪个网站只有5层页面?算了,要用它的,就只能听他的。好好用 back ,然后给页面注入数据吧。
2.scroll-view 它里面一会不能放这个,一会不能放那个。
今天要解决的问题就是:

如上图中,当内容滑动到 "素菜" 时候,上面分类导航也显示到“素菜”上来。
其实,这玩意,如果是放到普通的网页上,简单到爆。但是小程序不同,首先,你不能通过js来操作页面dom,只能用data和页面通信。 其次,scroll-view提供给我们能用上的唯一事件就是bindscroll,页面滚动,可以告诉你scrollTop是多少,就这么个玩意。 最后,每个分类下的数据有多少?不知道!不确定!!
来你来做吧!
好了,废话不说了,开工吧:
先在data中加入变量:classes,用来存放分类的相关信息:名字,其下的子项目数。
再在data中加入变量:activeClass,用来设置哪个分类为活动分类
然后,在bindscroll触发的事件中,写下代码:

代码详细分析:
let classes={}; 这个对象(用数组也可)不是用来放分类信息的,而是用来放 每个分类下的内容,从滚动条多少位置开始。
当然,第一个分类是从0开始!
下面就开始遍历你的分类信息,它的滚动条位置就是:上一个滚动条的位置+ 本分类的数据条数除以每行个数(结果上收)+标题高度+(其他数据外的高度,视情况而定)
上面一步是关键,最为重要,算错了就匹配不上。
最后,每滚动一次,就遍历那个滚动条位置classes ,当前滚动条位置一旦超过某数,说明已经滚动到它了。
马上把activeClass设置为滚动到的下标。
好了,wxml中,是这么写的:

其他的没什么特别的,也就是 根据data中activeClass的值,动态给分类添加css就行了。
好了,快去滚动吧!
近期在用微信小程序,做一个项目。
这其中的坑啊,好多好多啊,忍不住要吐槽一下。
1.页面栈只能存在5个! 只能5层页面,CNMB,哪个网站只有5层页面?算了,要用它的,就只能听他的。好好用 back ,然后给页面注入数据吧。
2.scroll-view 它里面一会不能放这个,一会不能放那个。
今天要解决的问题就是:

如上图中,当内容滑动到 "素菜" 时候,上面分类导航也显示到“素菜”上来。
其实,这玩意,如果是放到普通的网页上,简单到爆。但是小程序不同,首先,你不能通过js来操作页面dom,只能用data和页面通信。 其次,scroll-view提供给我们能用上的唯一事件就是bindscroll,页面滚动,可以告诉你scrollTop是多少,就这么个玩意。 最后,每个分类下的数据有多少?不知道!不确定!!
来你来做吧!
好了,废话不说了,开工吧:
先在data中加入变量:classes,用来存放分类的相关信息:名字,其下的子项目数。
再在data中加入变量:activeClass,用来设置哪个分类为活动分类
然后,在bindscroll触发的事件中,写下代码:

代码详细分析:
let classes={}; 这个对象(用数组也可)不是用来放分类信息的,而是用来放 每个分类下的内容,从滚动条多少位置开始。
当然,第一个分类是从0开始!
下面就开始遍历你的分类信息,它的滚动条位置就是:上一个滚动条的位置+ 本分类的数据条数除以每行个数(结果上收)+标题高度+(其他数据外的高度,视情况而定)
上面一步是关键,最为重要,算错了就匹配不上。
最后,每滚动一次,就遍历那个滚动条位置classes ,当前滚动条位置一旦超过某数,说明已经滚动到它了。
马上把activeClass设置为滚动到的下标。
好了,wxml中,是这么写的:

其他的没什么特别的,也就是 根据data中activeClass的值,动态给分类添加css就行了。
好了,快去滚动吧!