吸顶容器 Sticky

吸顶容器,常见应用场景为吸顶菜单、索引选择器

吸顶容器需要stickysticky-item组件关联使用

sticky-item包括头部headerbody两个部分,通过slot注入

页面垂直滑动距离(必填)

因为组件内部无法获取页面垂直滑动距离,所以需要在sticky组件上通过属性scroll-top吸顶容器 Sticky - 图1传入

属性传值示例代码

  1. <!-- 页面wxml文件 -->
  2. <l-sticky scrollTop="{{scrollTop}}">
  3. <l-sticky-item>
  4. <view slot="header">吸顶菜单</view>
  5. <view slot="body">内容部分</view>
  6. </l-sticky-item>
  7. </l-sticky>
  1. // 页面js文件
  2. Page({
  3. data: {
  4. // 页面垂直滑动的距离
  5. scrollTop: undefined
  6. },
  7. onPageScroll(res) {
  8. this.setData({
  9. scrollTop: res.scrollTop
  10. })
  11. }
  12. })

wx.lin传值示例代码

提示

  • 若一个页面中仅使用了一个sticky组件,可采用wx.lin.setScrollTop(scrollTop)方式传入scrollTop值。该方式在一定程度上可以优化性能。
  1. <!-- 页面wxml文件 -->
  2. <l-sticky>
  3. <l-sticky-item>
  4. <view slot="header">吸顶菜单</view>
  5. <view slot="body">内容部分</view>
  6. </l-sticky-item>
  7. </l-sticky>
  1. // 页面js文件
  2. Page({
  3. onPageScroll(res) {
  4. wx.lin.setScrollTop(res.scrollTop)
  5. }
  6. })

渲染模式

sticky组件拥有jscss两种渲染模式,通过mode属性指定,默认值为css

两者区别

  • css模式UI流畅度优于js模式,适合对交互体验要求较高的场景,但不支持事件监听,并且部分机型不支持(此时会回滚js模式)
  • js模式在滑动过快的情况下,吸顶容器会闪烁,但支持linstickylinunsticky事件监听,适合复杂业务场景

吸顶位置

sticky-item组件上设置top属性(单位rpx),指定吸顶容器吸附点距离视窗顶部的距离,默认为0,即吸附到视窗顶部

示例代码

  1. <l-sticky scrollTop="{{scrollTop}}">
  2. <l-sticky-item top="10">
  3. <view slot="header">吸顶菜单</view>
  4. <view slot="body">内容部分</view>
  5. </l-sticky-item>
  6. <l-sticky-item top="20">
  7. <view slot="header">吸顶菜单</view>
  8. <view slot="body">内容部分</view>
  9. </l-sticky-item>
  10. </l-sticky>

动态修改内容

在某些场景下sticky-item的内容会增加/减少,如:上拉加载更多,此时需要主动调用wx.lin.flushSticky()方法刷新吸顶容器的宽高数据,否则会造成吸顶位置错乱。

示例代码

  1. fetchData(){
  2. // 从服务端获取数据
  3. let data = http.fetchData()
  4. // 设置数据
  5. this.setData({
  6. listData:data
  7. })
  8. // 刷新sticky容器
  9. wx.lin.flushSticky()
  10. }

吸顶容器属性(Sticky Attributes)

参数说明类型可选值默认值版本号
mode吸顶容器实现方式Stringcss/jscss0.7.4
scroll-top页面垂直滑动距离,必填Number--0.7.4

吸顶容器子项属性(StickyItem Attributes)

参数说明类型可选值默认值版本号
top吸顶容器吸附的位置(单位rpx)Number--0.7.4

吸顶容器外部样式类(Sticky ExternalClasses)

外部样式类名说明备注版本号
l-class覆盖吸顶容器整体样式-0.7.4

吸顶容器子项外部样式类(StickyItem ExternalClasses)

外部样式类名说明备注版本号
l-class覆盖吸顶容器子项整体样式-0.7.4
l-header-class覆盖吸顶容器子项头部样式-0.7.4
l-header-sticky-class覆盖吸顶容器子项头部吸顶后的样式-0.7.4

吸顶容器事件(Sticky Events)

事件名称说明返回值备注版本号
bind:linsticky吸顶容器吸顶回调事件当前sticky-itemsticky中的索引值index-0.7.4
bind:linunsticky吸顶容器脱落回调事件当前sticky-itemsticky中的索引值index0.7.4

吸顶容器wx.lin方法(Sticky wx.lin Function)

方法名称说明返回值备注版本号
wx.lin.flushSticky()刷新吸顶容器宽高数据,在改变sticky-item中的内容后调用--0.7.4
wx.lin.setScrollTop(scrollTop)设置页面滑动距离,仅可在页面使用一个sticky组件时使用该方式传值,若一个页面使用了两个及以上的sticky组件时,不可使用该方式传值--0.7.4

吸顶容器子项插槽(Sticky-item Slot)

Slot名称说明备注版本号
header吸顶容器吸附部分-0.7.4
body吸顶容器的内容区域该部分用于计算吸顶容器脱落的时机0.7.4