• uniapp:tabBar点击后设置动画效果


    APP端不支持dom操作,也不支持active伪类,绞尽脑汁也没办法给uniapp原生的tabBar点击加动画效果,所以最终只能舍弃原生tabBar,改用自定义tabBar。

    自定义tabBar的原理是,页面的上部分分别是tabBar对应的页面组件,下部分是固定在底部的tabBar,通过点击tabBar获取到当前索引,然后通过v-if来判断显示哪个页面组件,跟原生tabBar不同的是,这里仅用一个page,所以在pages.json里只需要注册index页面即可,在router里也只需要设置index即可,同时也要注意,其他页面组件并不是一个页面,所以没有onShow,onLoad等方法,可以通过computed和watch来达到类似效果,也可以使用vue原生的生命周期,比如create,mounted这些。

    index页面的完整代码:

    1. <template>
    2. <view>
    3. <home v-if="PageCur=='home'" />
    4. <orders v-if="PageCur=='orders'" />
    5. <messages v-if="PageCur=='messages'" />
    6. <find v-if="PageCur=='find'" />
    7. <my v-if="PageCur=='my'" :userInfo="userInfo"/>
    8. <view class="cu-bar tabbar bg-white shadow foot">
    9. <view class="cu-bar tabbar bg-white shadow foot">
    10. <view :class="PageCur=='home'?activeColor:defaultColor" @click="NavChange" data-cur="home">
    11. <view class='cuIcon-homefill' :class="PageCur=='home'?'animation-bounce':''">view>主页
    12. view>
    13. <view :class="PageCur=='orders'?activeColor:defaultColor" @click="NavChange" data-cur="orders">
    14. <view class='cuIcon-formfill' :class="PageCur=='orders'?'animation-bounce':''">view>订单
    15. view>
    16. <view :class="PageCur=='messages'?activeColor:defaultColor" @click="NavChange" data-cur="messages">
    17. <view class='cuIcon-commentfill' :class="PageCur=='messages'?'animation-bounce':''">view>消息
    18. view>
    19. <view :class="PageCur=='find'?activeColor:defaultColor" @click="NavChange" data-cur="find">
    20. <view class='cuIcon-explorefill' :class="PageCur=='find'?'animation-bounce':''">view>发现
    21. view>
    22. <view :class="PageCur=='my'?activeColor:defaultColor" @click="NavChange" data-cur="my">
    23. <view class='cuIcon-myfill' :class="PageCur=='my'?'animation-bounce':''">view>我的
    24. view>
    25. view>
    26. view>
    27. view>
    28. template>
    29. <script>
    30. import { USER_INFO } from "@/common/util/constants"
    31. export default {
    32. data() {
    33. return {
    34. defaultColor: 'action text-gray',
    35. activeColor: 'action text-red',
    36. PageCur: 'home',
    37. userInfo: {},
    38. };
    39. },
    40. onLoad: function() {
    41. this.PageCur = 'home';
    42. this.userInfo = uni.getStorageSync(USER_INFO);
    43. },
    44. methods: {
    45. NavChange: function(e) {
    46. this.PageCur = e.currentTarget.dataset.cur;
    47. }
    48. }
    49. }
    50. script>
    51. <style scoped lang="scss">
    52. style>

    在view的data-cur属性里设置每个tab的key,通过点击事件可以获取这个key,比如当key等于home时,通过动态类设置被选中的颜色,同理,给icon设置一个animation-bounce类,这个类是控制动画效果的,已经提前写在一个animation.css文件里了,这种动画效果的css文件网上很多,可以自己找一下,icon会被放大1.4倍,然后恢复。

    1. @-webkit-keyframes bounce {
    2. 0% {
    3. transform: scale(1);
    4. }
    5. 50% {
    6. transform: scale(1.4);
    7. }
    8. 100% {
    9. transform: scale(1);
    10. }
    11. }

    最终效果:

    参考文章:uniApp混合开发小程序实现自定义底部tab仿绿洲APP动画效果_uniapp的tabbar图标变化可以动画吗_湫沐椿风的博客-CSDN博客

  • 相关阅读:
    xlsx模板下载
    基础MySQL的语法练习
    2023计算机毕业设计SSM最新选题之java二手交易平台2ud44
    独家!Java面试题整理,源自真实面试经历
    【图像处理】浅谈直方图
    漏洞复现--鸿运主动安全监控云平台任意文件下载
    《全网首发》平衡三进制图灵机的构建
    基于容器和集群技术的数据自动化采集设计和实现
    【英语:基础进阶】D1.听口实战运用
    剑指 Offer 03. 数组中重复的数字
  • 原文地址:https://blog.csdn.net/lilycheng1986/article/details/133279869