微信小程序回到顶部小浮标

前言

最近在做微信小程序开发,简单学习一下就开始上项目了。

可能之前只做过网页应用,用了Vue 2 + Element UI做得很快很顺手,到微信小程序这边文档看得有些吃力,而且微信小程序和组件可能存在样式不兼容的问题,引入组件本身时为了快速开发,而因为不兼容问题可能反而降低了开发效率,加上公司电脑问题使得微信小程序无法构建npm项目,因此想引入依赖的话需要以非常非常原始的方法引入——下载程序源文件。于是使用了微信原生组件以及微信开发的weui组件库进行搭建。虽然有weui组件库,但感觉和使用原生组件区别不大,只是提供了一些样式,组件库的使用实例很少,经常还要到处找实例。

有时候,在一个页面会获取到大量的数据,而且在小程序很少会有分页功能,主要是我这边前端获取到的数据就是一大片的,当展示给用户的时候,页面会非常长,因此需要一些浮标进行位置导航,比如说经常看到的“回到顶部”小浮标。

实现原理

在之前做网页应用的时候,会使用<a>标签进行定位并且在页面内跳转,在Element UI中也有非常好用的组件,换个思路,网页应用还可以使用分页解决这一问题。在小程序当中,由于页面很少,因此能够摆放的元素很少,使用浮标无疑是不二选择。在微信小程序当中,提供了wx.pageScrollTo以改变滚动条的位置,具体可以看微信小程序的官方文档。这里直接给出滚动到顶部的实例。

backTop() {
  wx.pageScrollTo({
    scrollTop: 0,
    duration: 300
  })
}

解释一下这行代码,scrollTop是指到顶部的距离,duration是指花多少时间到达顶部,单位是毫秒。到这里我们就可以做一个到滚到顶部的小浮标了。

具体实现

这里我把小浮标做成一个组件,当然这是不是组件无伤大雅。

<view class="backtop-form" bindtap="backTop">
  ↑
</view>
.backtop-form {
  /* size */
  width: 77rpx;
  height: 77rpx;
  /* form */
  opacity: 0.4;
  border-radius: 100%;
  background-color: #0ac80a;
  /* position */
  position: sticky;
  bottom: 80rpx;
  left: 87%;
  /* font */
  color: white;
  font-size: larger;
  text-align: center;
  line-height: 77rpx;
}

.backtop-form:hover {
  opacity: 1;
}

这样子小浮标就固定在右下角啦,点击一下就会就会高亮显示并且回滚到顶部。

进阶

小程序页面少,而且元素摆法已经很密集了,在上面样式中虽然做了透明化处理(opacity),但还有可以改进的空间。比如当用户需要它的时候就会自己出现。这时候就需要另一个接口帮忙了。

onPageScroll: function (e){
  console.log(e.scrollTop)
}

解释一下,这个是页面滚动条的监视函数,如果滚动条发生变化,会反馈到e.scrollTop当中。因此可以使用这个接口使我们的小浮标显示或者隐藏。

onPageScroll: function (e) {
  if (e.scrollTop >= 400)
    this.setData({
      backTopFlag: true
    })
  else
    this.setData({
      backTopFlag: false
    })
  },

这时候我们的组件需要新增一些东西。

新增一个隐藏样式。

.disable {
  display: none;
}

在页面中进行判断。

Component({
  properties: {
    active: {
      type: Boolean,
      value: false
    }
  },

  data: {
    active: false
  },

  methods: {
    backTop() {
      wx.pageScrollTo({
        scrollTop: 0,
        duration: 300
      })
    }
  }
})
<view class="{{active?'backtop-form':'disable'}}" bindtap="backTop">
  ↑
</view>

这样子小浮标完成了~

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值