zoukankan      html  css  js  c++  java
  • uni-app 顶部tabbar切换

     

    完成样式

    项目地址:https://gitee.com/jielov/uni-app-tabbar

    顶部tabbar代码

    <!--顶部导航栏-->
    <view class="uni_tab_bar">
                <view class="uni_swiper_tab order_top">
                    <block v-for="(tabBar,index) in tabBars" :key="index">
                        <view class="swiper_tab_list" :class="{'active': tabIndex==tabBar.id}" @tap="toggleTab(tabBar.id)">
                            {{tabBar.name}}
                            <view class="swiper_tab_line">
                            </view>
                        </view>
                    </block>
                </view>
            </view>

    使用v-for 循环 tabbars 来进行标题的加载 v-for="(tabBar,index) in tabBars" :key="index" 。

     :key="index" 使得在勾选复选框后不会不随这内容的变动而变动例如在勾选第一个后 添加一个新的内容后后勾线后的复选框不会一直是第一个

     :class="{'active': tabIndex==index}" 根据index,动态切换css 样式,tabIndex为初始化第一个选择项,在data里面定义tabIndex: 0,tabBars循环数据,放在data里面。

    data(){
        return{
            tabIndex: 0, //选中标签栏的序列
            tabBars: [
                        {name: '全部',id: '0'},
                        {name: '待服务',id: '1'},
                        {name: '服务中',id: '2'},
                        {name: '已完成',id: '3'},
                        {name: '已取消',id: '4'},
                    ],
        }
    }

     @tap="toggleTab(tabBar.id)" @tab为点击切换事件,放在methods里面。

    toggleTab(index) {
      this.tabIndex = index;
    },

     以下为tab内容区域,css样式在最后面哦~

    <view class="order_centext">
      <swiper :current="tabIndex" @change="tabChange" class="order_centext">
        <swiper-item v-for="(content,index) in tabBars" :key="index">
          <view class="swiper_item">{{content.name}}</view>
        </swiper-item>
      </swiper>
    </view>

    swiper为滑动切换内容,tabbar滑动切换稍微没那么流畅,有点卡顿。可以选择去掉滑动,只保留点击切换即可。

    @change="tabChange" 滑动事件,同样也是放在methods里面

    //滑动切换swiper
    tabChange(e) {
        const tabIndex = e.detail.current
        this.tabIndex = tabIndex
    }

     css样式

    .order_top {
    display: flex;
    align-items: center;
    justify-content: space-around;
    background-color: #FFFFFF;
    }
    
    .swiper_tab_list {
    color: #888888;
    font-weight: bold;
    }
    
    .uni_tab_bar .active {
    color: #FEDE33;
    margin-top: 17rpx;
    background-color: #FFFFFF;
    }
    
    .active .swiper_tab_line {
    border-bottom: 4rpx solid #FEDE33;
    width: 50rpx;
    margin: auto;
    margin-top: 17rpx;
    background-color: #0B9C13;
    }
    
    .uni_swiper_tab {
    border-bottom: 2rpx solid #eeeeee;
    margin-bottom: 15rpx;
    }
    
    .order_centext {
    height: 800rpx;
    position: fixed;
    top: 160rpx;
    left: 0;
    right: 0;
    bottom: 0;
    background-color: #8A6DE9;
    margin-left: 15rpx;
    margin-right: 15rpx;
    }

    本文来自博客园,作者:虚乄,转载请注明原文链接:https://www.cnblogs.com/lovejielive/p/14138611.html

  • 相关阅读:
    Delphi/XE2 使用TIdHttp控件下载Https协议服务器文件[转]
    [Delphi]实现使用TIdHttp控件向https地址Post请求[转]
    让PowerShell用上Git
    解答WPF中ComboBox SelectedItem Binding不上的Bug
    那么小伙伴么,问题来了,WPF中,控件的Width="*"在后台怎么写?
    WPF Adorner+附加属性 实现控件友好提示
    关于Mvvm的一些深入理解
    第一个WP8程序,照相机
    夜深了,我们为什么加班(转载)
    Linux学习-SRPM 的使用 : rpmbuild (Optional)
  • 原文地址:https://www.cnblogs.com/lovejielive/p/14138611.html
Copyright © 2011-2022 走看看