Skip to content

xtf-back-top

组件说明

xtf-back-top 是回到顶部按钮组件,当页面滚动超过指定阈值时自动显示,点击后平滑滚动回页面顶部。支持多种视觉变体(实心、柔和、描边、玻璃、极简、渐变)、图标/图片/文字自定义和插槽定制,适用于长页面快速返回顶部的场景。


基础用法

1. 最简示例

通过 scrollTop 绑定页面滚动位置,当滚动超过 threshold(默认 400px)时自动显示:

vue
<template>
  <view>
    <view v-for="i in 50" :key="i" style="padding: 24rpx; border-bottom: 1rpx solid #eee">
      列表项 {{ i }}
    </view>
    <xtf-back-top :scroll-top="scrollTop" />
  </view>
</template>

<script>
export default {
  data() {
    return {
      scrollTop: 0
    }
  },
  onPageScroll(e) {
    this.scrollTop = e.scrollTop
  }
}
</script>

2. 带文字与变体切换

通过 text 添加辅助文字,通过 variant 切换视觉风格:

vue
<template>
  <view>
    <view
      style="display: flex; gap: 16rpx; position: fixed; top: 40rpx; right: 20rpx; z-index: 999"
    >
      <xtf-button size="small" @click="variant = 'solid'">实心</xtf-button>
      <xtf-button size="small" @click="variant = 'soft'">柔和</xtf-button>
      <xtf-button size="small" @click="variant = 'outline'">描边</xtf-button>
      <xtf-button size="small" @click="variant = 'glass'">玻璃</xtf-button>
    </view>
    <view v-for="i in 50" :key="i" style="padding: 24rpx; border-bottom: 1rpx solid #eee">
      列表项 {{ i }}
    </view>
    <xtf-back-top :scroll-top="scrollTop" text="顶部" :variant="variant" />
  </view>
</template>

<script>
export default {
  data() {
    return {
      scrollTop: 0,
      variant: 'solid'
    }
  },
  onPageScroll(e) {
    this.scrollTop = e.scrollTop
  }
}
</script>

3. 自定义图标与图片

通过 icon 更换图标,通过 image 使用自定义图片替代图标:

vue
<template>
  <view>
    <view v-for="i in 50" :key="i" style="padding: 24rpx; border-bottom: 1rpx solid #eee">
      列表项 {{ i }}
    </view>
    <xtf-back-top
      :scroll-top="scrollTop"
      image="https://picsum.photos/80/80?random=20"
      image-mode="aspectFit"
      variant="soft"
      shape="round"
    />
  </view>
</template>

<script>
export default {
  data() {
    return {
      scrollTop: 0
    }
  },
  onPageScroll(e) {
    this.scrollTop = e.scrollTop
  }
}
</script>

4. 尺寸与形状

通过 size 控制按钮大小,通过 shape 切换形状,通过 right / bottom 调整位置:

vue
<template>
  <view>
    <view v-for="i in 50" :key="i" style="padding: 24rpx; border-bottom: 1rpx solid #eee">
      列表项 {{ i }}
    </view>
    <xtf-back-top
      :scroll-top="scrollTop"
      size="lg"
      shape="square"
      :right="40"
      :bottom="200"
      variant="elevated"
    />
  </view>
</template>

<script>
export default {
  data() {
    return {
      scrollTop: 0
    }
  },
  onPageScroll(e) {
    this.scrollTop = e.scrollTop
  }
}
</script>

全部属性

属性类型默认值作用描述适用范围
scrollTopString | Number0当前页面滚动位置,需手动绑定 onPageScroll控制显隐
thresholdString | Number400显示按钮的滚动阈值(px),scrollTop 超过此值时显示调整出现时机
targetString''滚动目标选择器,为空时回退到页面级滚动指定滚动容器
rightString | Number28距右侧距离(rpx)调整水平位置
bottomString | Number120距底部距离(rpx)调整垂直位置
durationNumber320滚动动画时长(毫秒)调整滚动速度
iconString'north'按钮图标名,支持 xtf-icon 图标库自定义图标
textString''按钮辅助文字添加文字说明
variantString'solid'视觉变体:'solid' / 'soft' / 'outline' / 'glass' / 'minimal' / 'elevated'切换视觉风格
sizeString'md'按钮尺寸:'sm' / 'md' / 'lg'控制按钮大小
shapeString'round'按钮形状:'round' 圆形 / 'square' 圆角方形 / 'pill' 胶囊形切换形状
imageString''自定义图片地址,设置后替代图标使用图片替代图标
imageModeString'aspectFit'图片填充模式,对应 uni-app image 的 mode控制图片裁切
imageSizeString | Number''图片尺寸(rpx),默认跟随图标大小自定义图片大小
imageRadiusString | Number''图片圆角(rpx)自定义图片圆角
iconSizeString | Number''图标大小,默认按 size 自动计算自定义图标大小
iconColorString''图标颜色,默认按 variant 自动计算自定义图标颜色
textColorString''文字颜色,默认按 variant 自动计算自定义文字颜色
contentDirectionString'column'内容排列方向:'column' 纵向 / 'row' 横向调整图标文字排列
backgroundColorString''自定义背景色,覆盖 variant 默认背景精确控制背景色
borderColorString''自定义边框色精确控制边框色
shadowString''自定义阴影精确控制阴影
customClassString''按钮自定义类名样式覆盖
contentClassString''内容区域自定义类名内容样式定制
contentStyleString | Object''内容区域自定义样式内容样式定制
iconClassString''图标自定义类名图标样式定制
iconStyleString | Object''图标自定义样式图标样式定制
imageClassString''图片自定义类名图片样式定制
imageStyleString | Object''图片自定义样式图片样式定制
textClassString''文字自定义类名文字样式定制
textStyleString | Object''文字自定义样式文字样式定制
customStyleString | Object''按钮自定义样式动态样式覆盖

事件

事件名称触发时机回调参数参数说明
click点击按钮并执行滚动后触发

插槽

插槽名说明
默认插槽替换整个返回顶部按钮内容。
vue
<template>
  <xtf-back-top :scroll-top="scrollTop">
    <xtf-button shape="circle" size="sm" type="solid">
      <template #prefix><xtf-icon name="north" size="sm" /></template>
    </xtf-button>
  </xtf-back-top>
</template>

<script>
export default {
  data() {
    return { scrollTop: 0 }
  },
  onPageScroll(event) {
    this.scrollTop = event.scrollTop
  }
}
</script>

方法

方法名参数说明
scrollToTop()立即调用页面或 target 指定容器的回顶逻辑,并触发 click

主题说明

  • 按钮背景使用 var(--xtf-back-top-bg),边框使用 var(--xtf-back-top-border),阴影使用 var(--xtf-back-top-shadow)
  • solid 变体背景为 var(--xtf-color-primary),带主题色阴影
  • soft 变体背景为半透明白色,带浅灰边框
  • outline 变体背景为半透明白色,边框为主题色
  • glass 变体背景为半透明白色,带毛玻璃模糊效果
  • minimal 变体背景为半透明白色,无阴影
  • elevated 变体背景为主题色渐变,带加强阴影
  • 出现动画为 xtf-back-top-pop(缩放 + 上移),时长 220ms

如需全局调整主题,请在 xtf-config-provider 或主题配置中覆盖上述 CSS 变量。

MIT Licensed