微信小程序 自定义GIF tabbar 底部导航栏

1.新建tabbar组件

2. wxml组件代码

<view class="tabbar">
    <view class="tabbar-item" wx:for="{{ tabs }}" wx:key="{{index}}" bindtap="switchTab" data-index="{{index}}">
        <image class="tabbar-item-icon" style="width: 50px;height: 40px;" mode="aspectFit" src="{{item.selected ? item.iconPath : item.selectedIconPath }}" class="{{item.selected ? 'selected' : ''}}"></image>
        <view wx:if="{{item.text != ''}}" class="tabbar-item-text" class="{{item.selected ? 'selected' : ''}}">{{item.text}}</view>
    </view>
</view>

注意:因为GIF展示会有缓存影响,需要发GIF放到服务器上 并且在后缀加上随机数或者时间戳进行展示

3.js 代码

// components/tabbar/tabbar.js
Component({
    /**
     * 组件的属性列表
     */
    properties: {

    },

    /**
     * 组件的初始数据
     */
    data: {
        tabs: [
            {
                iconPath: 'https://football.web1995.top/images/0-1.gif',
                selectedIconPath: 'https://football.web1995.top/images/0-2.gif',
                text: '',
                selected: true,
                pagePath: '/pages/home/index'
            },
            {
                iconPath: 'https://football.web1995.top/images/1-1.gif',
                selectedIconPath: 'https://football.web1995.top/images/1-2.gif',
                text: '',
                selected: false,
                pagePath: '/pages/message/index'
            },
            {
                iconPath: 'https://football.web1995.top/images/2-1.gif',
                selectedIconPath: 'https://football.web1995.top/images/2-2.gif',
                text: '',
                selected: false,
                pagePath: '/pages/user/index'
            },
            {
                iconPath: 'https://football.web1995.top/images/3-1.gif',
                selectedIconPath: 'https://football.web1995.top/images/3-2.gif',
                text: '',
                selected: false,
                pagePath: '/pages/user/index'
            },
            {
                iconPath: 'https://football.web1995.top/images/4-1.gif',
                selectedIconPath: 'https://football.web1995.top/images/4-2.gif',
                text: '',
                selected: false,
                pagePath: '/pages/user/index'
            }
        ],
        oldTabs: [
            {
                iconPath: 'https://football.web1995.top/images/0-1.gif',
                selectedIconPath: 'https://football.web1995.top/images/0-2.gif',
                text: '',
                selected: true,
                pagePath: '/pages/home/index'
            },
            {
                iconPath: 'https://football.web1995.top/images/1-1.gif',
                selectedIconPath: 'https://football.web1995.top/images/1-2.gif',
                text: '',
                selected: false,
                pagePath: '/pages/message/index'
            },
            {
                iconPath: 'https://football.web1995.top/images/2-1.gif',
                selectedIconPath: 'https://football.web1995.top/images/2-2.gif',
                text: '',
                selected: false,
                pagePath: '/pages/user/index'
            },
            {
                iconPath: 'https://football.web1995.top/images/3-1.gif',
                selectedIconPath: 'https://football.web1995.top/images/3-2.gif',
                text: '',
                selected: false,
                pagePath: '/pages/user/index'
            },
            {
                iconPath: 'https://football.web1995.top/images/4-1.gif',
                selectedIconPath: 'https://football.web1995.top/images/4-2.gif',
                text: '',
                selected: false,
                pagePath: '/pages/user/index'
            }
        ],
    },

    /**
     * 组件的方法列表
     */
    methods: {
        switchTab(e) {
            const { index } = e.currentTarget.dataset;
            const { tabs, oldTabs } = this.data;
            tabs.forEach((item, idx) => {
                if (index === idx) {
                    item.iconPath = oldTabs[idx].iconPath + '?time=' + Math.random();
                    item.selectedIconPath = oldTabs[idx].selectedIconPath + '?time=' + Math.random();
                    item.selected = true
                } else {
                    item.selected = false
                }
            })

            this.setData({
                tabs
            })
        }
    }
})

有开发问题可以咨询我喔  wx: ai_002 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值