微信小程序——列表导航吸顶效果

微信小程序——列表导航吸顶效果,第1张

众多类似商城项目中,都会有列表分类标签随着界面滚动吸顶的效果

APP中实现相关功能很容易,h5也可以动态 *** 作DOM来设置

微信小程序没有DOM,该怎么实现呢?

其实这个场景还是比较简单的,正常情况下导航标签是在列表中间的,滑到顶部时吸顶,再拉下来时又回到原来的位置

根据场景,有两个参考思路:

1、顶部定位一个常在的同样的导航标签,通过页面的 scrollOffset 来控制显隐即可

2、通过动态添加 fixed 样式,来动态改变标签在页面中的位置

ps:不过第二种思路会有一个缺陷就是切换位置时页面会因为少了一部分而上移,所以还是需要补白,所以还是用第一种思路

我这里是用了自定义导航栏的,所以实现上会有所不同,如果是用系统导航栏可以稍微调整一下,因为偏移量会有所区别

CSS部分

JS部分

其中 CacheUtil.naviStatuHeight 这个是我应用启动时获取的导航+状态栏高度,X和其他机型还是有所区别,如果是系统导航栏的话这些相关逻辑都可以省略

这里为什么用navigator而不用view呢?

因为navigator是原生组件,可以在最上层,因为有可能列表内容有原生组件的话滑动就会有问题,所以navigator在不设置url的情况下和view的效果差不多,故采用navigator

cover-view:bug: 自定义组件嵌套 cover-view 时,自定义组件的 slot 及其父节点暂不支持通过 wx:if 控制显隐,否则会导致 cover-view 不显示,而且使用的版本限制也很多,所以就不考虑

让微信小程序中间的图标也跟着图上下滑动方法如下:

1、在WXML文件中创建一个固定高度的区域,并设置其为可滚动的。

2、在该区域内添加两个元素:一个用于显示上下滑动的图片,另一个用于显示图标。

3、在CSS样式文件中,对这两个元素分别设置相应的位置和样式。其中,上下滑动的图片需要设置position:absolute。top:0。left:0。width:100%。height:auto。z-index:-1。等属性,使其能够覆盖住整个区域并与图标区分开来。而图标元素则需要设置position:relative。等属性来保证其相对于父元素的位置不变。

4、使用JavaScript监听区域的滚动事件,获取当前滚动位置,并将其赋值给图标元素的top属性,以实现图标随着滚动上下移动。

客官可移步 http://fanjiajia.cn/2019/07/02/wxxcx/flx1/

, 本文若有出入,请指正——来自小渣渣的颤抖

原来在app.wxss中定义了如下的内容【不知道是不是新建项目自动生成的,这里也就提供了 隐藏滚动条 的思路啦】

what, 宽高为0,而且还是透明的,难怪,好吧,修改宽高4px,color设置为green,以为可以了,呵呵,太年轻。

scroll-viwe 依然没有滚动条,以为是布局原因,导致滚动条消失在界面外,我将宽高设为20px,想想也是搞笑,设这么宽,但是,正是这种傻劲,再运行,发现右边宽出了好多,然而还是没有滚动条,懂了,肯定还有其他设置,果不其然……

一通捣腾,原来,除了设置 ::-webkit-scrollbar ,还需要设置 ::-webkit-scrollbar-track ,这是设置滚动的轨道, ::-webkit-scrollbar-thumb ,这是设置滚动条的。

所以完整的设置如下(在 app.wxss 中,这样所有的scroll-view都有了,如果需要单独设置样式,可在单独page的wxss中设置)

好了,看看效果


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

原文地址: http://outofmemory.cn/yw/12063779.html

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

发表评论

登录后才能评论

评论列表(0条)

保存