Skip to content

xtf-sticky

组件说明

xtf-sticky 是内容吸顶容器,适用于筛选栏、操作栏和标签栏。支持视口固定与 CSS sticky 容器模式,并回传滚动测量和固定状态。

基础用法

1. 视口吸顶

vue
<template>
  <view>
    <xtf-sticky>
      <view style="padding: 24rpx; background: #fff"> <xtf-text text="商品分类" /></view>
</xtf-sticky>
    <view style="height: 1600rpx"
  /></view>
</template>
<script>
export default {}
</script>

2. 偏移和状态事件

vue
<template>
  <xtf-sticky :offset-top="88" @change="changed" @scroll="scrolled">
    <xtf-tabs :items="tabs"
  /></xtf-sticky>
</template>
<script>
export default {
  data() {
    return { tabs: [{ label: '全部' }, { label: '待付款' }] }
  },
  methods: {
    changed(data) {
      uni.showToast({ title: data.fixed ? '已吸顶' : '已复位', icon: 'none' })
    },
    scrolled(data) {
      console.log(data.top, data.offsetTop)
    }
  }
}
</script>

3. 容器模式

vue
<template>
  <scroll-view scroll-y style="height: 600rpx">
    <view style="height: 300rpx" /><xtf-sticky mode="container" :offset-top="20" :z-index="6"
      ><xtf-button label="容器内吸顶操作栏"
    /></xtf-sticky>
    <view style="height: 900rpx"
  /></scroll-view>
</template>
<script>
export default {}
</script>

全部属性

| 属性 | 类型 | 默认值 | 作用描述 | 适用范围 | | --- | --- | --- | --- | | offsetTop | Number \| String | 0 | 吸顶偏移,数字按 rpx 处理 | 顶部导航避让 | | zIndex | Number | 99 | 固定层级 | 覆盖内容 | | disabled | Boolean | false | 关闭吸顶监听 | 条件禁用 | | mode | String | 'viewport' | viewport 固定或 container 原生 sticky | 滚动容器选择 | | container | Boolean \| String | false | mode 非法时兼容决定容器模式 | 兼容配置 | | customClass/customStyle | String / String \| Object | ''/'' | 根节点样式定制 | 样式覆盖 |

事件

事件名称触发时机回调参数参数说明
scroll每次测量位置({ top, fixed, offsetTop })锚点位置、固定状态、rpx 偏移
change固定状态变化({ fixed })是否已固定

插槽

插槽名作用作用域参数说明
default吸顶内容组件固定或容器吸顶时整体保留该内容

完整插槽示例:

vue
<template>
  <view>
    <xtf-sticky :offset-top="88" @change="changed">
      <view style="padding: 24rpx; background: #fff"><xtf-tabs :items="tabs" /></view>
</xtf-sticky>
    <view style="height: 1600rpx"
  /></view>
</template>
<script>
export default {
  data() {
    return { tabs: [{ label: '全部' }, { label: '待付款' }] }
  },
  methods: {
    changed(data) {
      console.log(data.fixed)
    }
  }
}
</script>

主题说明

  • 容器模式使用 --xtf-sticky-offset--xtf-sticky-z-index
  • 视口固定内容继承背景并使用轻量阴影。 如需全局调整主题,请在 xtf-config-provider 或主题配置中覆盖上述 CSS 变量。

MIT Licensed