风云酷小子吧 关注:847贴子:22,533
  • 8回复贴,共1

【微信小程序爬坑】scroll-view根据内容滚动切换分类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就行了。
好了,快去滚动吧!


IP属地:重庆本楼含有高级字体1楼2017-08-09 21:05回复
    支持一个

    花之图谱为您报时: 2017年08月09日 周三 22时12分50秒050毫秒


    IP属地:山东来自Android客户端2楼2017-08-09 22:12
    回复
      实力顶贴


      IP属地:贵州来自Android客户端3楼2017-09-08 21:09
      回复
        你好,刚才试了一下你的方法,好像不行,刚学习小程序,希望能得到你的指点


        IP属地:广东4楼2018-04-21 01:21
        回复
          啊哈,可以了


          IP属地:广东5楼2018-04-21 01:29
          收起回复
            贴吧工具 不更新了嘛???网址都打不开了


            6楼2018-06-05 11:37
            回复(2)