vue3使用uniapp返回顶部

18 篇文章 1 订阅

 components/back-top/back-top.vue

<style lang="scss" scoped>
.top {
  height: 80rpx;
  width: 80rpx;
  text-align: center;
  line-height: 80rpx;
  border-radius: 50%;
  background-color: rgba($color: #FFFFFF, $alpha: 0.8);
  position: fixed;
  z-index: 999;
  right: 30rpx;
  bottom: 100rpx;
  animation: heart 0.3s;
  @keyframes heart {
    0% {
      right: -30rpx;
    }
    100% {
      right: 30rpx;
    }
  }
  .ic-back-top {
    font-size: 60rpx !important;
  }
}
</style>

<template>
  <view class="top" v-if="topShow" @click="goTop()">
    <text class="ic ic-back-top"></text>
  </view>
</template>

<script setup name="back-top">
import { ref } from 'vue'

const props = defineProps({
  scrollTop: {
    type: Number,
    default: 0
  }
})

const topShow = ref(false)
function topData(e) {
  topShow.value = e > 200
}

const goTop = () => {
  uni.pageScrollTo({
    scrollTop: props.scrollTop,
    duration: 300
  })
}
defineExpose({
  topShow,
  topData
})
</script>

main.js引入组件

import { createSSRApp } from 'vue'
import App from '@/App.vue'
import store from '@/store'
import backTop from '@/components/back-top/back-top.vue'
import 'animate.css/animate.min.css'
import '@/static/styles/_index.scss'
import '@/static/styles/_iconfont.scss'

import { showToast, showTip, copyModal } from '@/utils/common';

export function createApp() {
  const app = createSSRApp(App)
  app.use(store)
  app.component('backTop', backTop) // 置顶图标
  app.config.globalProperties.$showToast = showToast
  app.config.globalProperties.$showTip = showTip
  app.config.globalProperties.$copyModal = copyModal
  return {
    app
  }
}

组件中使用

<backTop ref="VT" :scrollTop="top"></backTop>

import { onPageScroll } from '@dcloudio/uni-app'

const top = ref(0)
const VT = ref(null)
onPageScroll(e => {
  VT.value.topData(e.scrollTop)
})

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值