uni-app订单详情页导航栏交互

自定义导航栏交互

  1. 导航栏左上角按钮:获取当前页面栈,如果不能返回上一页,按钮变成返回首页。
  2. 导航栏动画效果:滚动驱动的动画,根据滚动位置而不断改变动画的进度。

::: warning 注意事项

滚动驱动的动画目前仅支持微信小程序端,暂不支持 H5 端、App 端,多端兼容时添加条件编译
在这里插入图片描述
参考代码

<script setup lang="ts">
// 获取页面栈
const pages = getCurrentPages()
// 获取当前页面实例,数组最后一项
const pageInstance = pages.at(-1) as any

// 页面渲染完毕,绑定动画效果
onReady(() => {
  // 动画效果,导航栏背景色
  pageInstance.animate(
    '.navbar', // 选择器
    [{ backgroundColor: 'transparent' }, { backgroundColor: '#f8f8f8' }], // 关键帧信息
    1000, // 动画持续时长
    {
      scrollSource: '#scroller', // scroll-view 的选择器
      startScrollOffset: 0, // 开始滚动偏移量
      endScrollOffset: 50, // 停止滚动偏移量
      timeRange: 1000, // 时间长度
    },
  )
  // 动画效果,导航栏标题
  pageInstance.animate('.navbar .title', [{ color: 'transparent' }, { color: '#000' }], 1000, {
    scrollSource: '#scroller',
    timeRange: 1000,
    startScrollOffset: 0,
    endScrollOffset: 50,
  })
  // 动画效果,导航栏返回按钮
  pageInstance.animate('.navbar .back', [{ color: '#fff' }, { color: '#000' }], 1000, {
    scrollSource: '#scroller',
    timeRange: 1000,
    startScrollOffset: 0,
    endScrollOffset: 50,
  })
})
</script>

<template>
  <!-- 自定义导航栏: 默认透明不可见, scroll-view 滚动到 50 时展示 -->
  <view class="navbar" :style="{ paddingTop: safeAreaInsets?.top + 'px' }">
    <view class="wrap">
      <navigator
        v-if="pages.length > 1"
        open-type="navigateBack"
        class="back icon-left"
      ></navigator>
      <navigator v-else url="/pages/index/index" open-type="switchTab" class="back icon-home">
      </navigator>
      <view class="title">订单详情</view>
    </view>
  </view>
  <scroll-view class="viewport" scroll-y enable-back-to-top id="scroller">
    ...滚动容器
  </scroll-view>
</template>

::: warning 版本升级

  • uni-app 不支持 animate 类型。
  • 原生微信小程序 支持 animate 类型
  • 当前需求可基于 原生微信小程序 的 Page 实例类型 扩展 uni-app 的 Page 实例,参考代码 👇
// 基于小程序的 Page 实例类型扩展 uni-app 的 Page
type PageInstance = Page.PageInstance & WechatMiniprogram.Page.InstanceMethods<any>
const pageInstance = pages.at(-1) as PageInstance

const pageInstance = pages.at(-1) as any // [!code --]

:::

  • 10
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
uni-app是一个跨平台的开发框架,可以实现一次开发,多端发布的效果。能够利用uni-app,我们可以方便地仿制今日头条新闻app。 首先,我们可以通过uni-app页面结构和组件库来搭建类似今日头条的界面,包括顶部的导航栏、新闻列表的展示等。 然后,我们可以通过uni-app框架的网络请求功能,获取今日头条新闻的数据,并将其展示在界面上。可以利用uni-app内置的request或者axios等库来发送HTTP请求,并获取返回的新闻数据。 对于新闻列表展示,我们可以利用uni-app的列表渲染功能,将获取到的新闻数据渲染到页面上。同时,可以使用uni-app的下拉刷新组件实现新闻的实时更新。 另外,可以利用uni-app的路由功能,实现新闻详情页的跳转。当用户点击某个新闻标题时,可以将对应的新闻ID传递给详情页,并通过uni-app的路由功能进行页面的跳转。 在详情页中,可以展示新闻的详细内容,并可以提供评论、点赞等交互功能。可以利用uni-app内置的组件库,实现这些功能。 最后,针对用户的个人设置和喜好,可以通过uni-app的本地存储功能,实现收藏、关注等功能。用户可以自主选择感兴趣的栏目,并将其保存在本地,方便下次打开app时快速浏览相关内容。 总之,利用uni-app框架,我们可以轻松实现仿制今日头条新闻app的源码。通过运用uni-app的丰富功能和组件库,可以实现新闻的展示、跳转、交互等各种特性,以及个性化设置和存储功能。无论是在IOS、Android还是其他平台上,利用uni-app都能实现一次开发,多端发布,提高开发效率,降低开发成本。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值