zoukankan      html  css  js  c++  java
  • 微信小程序实例:实现tabs选项卡效果

    最近微信应用号是炒的如火如荼,热门满满,但是也可以发现搜索关键词出来,各类网站出现的还都是微信的官方文档解释。正好赶上这个热潮,这几天先把小程序技术文档看了个遍,就直接着手写案例了。很多组件微信内部已经封装完了,正好发现没有tab选项卡效果,这两天正好研究了下。思路如下:

    1、首先点击导航的时候需要两个变量,一个存储当前点击样式类,一个是其它导航默认的样式类

    2、选项卡内容列表同样也需要两个变量,一个存储当前显示块,一个存储的是其它隐藏的默认块

    3、使用三目运算通过点击获取导航索引,根据索引判断是否添加当前类【备注,这里我将点击事件绑定在父级导航栏,通过target对象得到点击触发的事件对象属性】

    请结合如下效果图:

          接下来直接查看源码:

    demo.wxml:

     
     在CODE上查看代码片派生到我的代码片
    1. <view class="tab">  
    2.   <view class="tab-left" bindtap="tabFun">  
    3.     <view class="{{tabArr.curHdIndex=='0'? 'active' : ''}}" id="tab-hd01" data-id="0">tab-hd01</view>  
    4.     <view class="{{tabArr.curHdIndex=='1'? 'active' : ''}}" id="tab-hd02" data-id="1">tab-hd01</view>  
    5.     <view class="{{tabArr.curHdIndex=='2'? 'active' : ''}}" id="tab-hd03" data-id="2">tab-hd01</view>  
    6.     <view class="{{tabArr.curHdIndex=='3'? 'active' : ''}}" id="tab-hd04" data-id="3">tab-hd01</view>  
    7.   </view>  
    8.   
    9.   <view class="tab-right">  
    10.     <view class="right-item {{tabArr.curBdIndex=='0'? 'active' : ''}}">tab-bd01</view>  
    11.     <view class="right-item {{tabArr.curBdIndex=='1'? 'active' : ''}}">tab-bd02</view>  
    12.     <view class="right-item {{tabArr.curBdIndex=='2'? 'active' : ''}}">tab-bd03</view>  
    13.     <view class="right-item {{tabArr.curBdIndex=='3'? 'active' : ''}}">tab-bd04</view>  
    14.   </view>  
    15. </view>  


    demo.js:

     
    1. Page( {  
    2.   data: {  
    3.     tabArr: {  
    4.       curHdIndex: 0,  
    5.       curBdIndex: 0  
    6.     },  
    7.   },  
    8.   tabFun: function(e){  
    9.     //获取触发事件组件的dataset属性  
    10.     var _datasetId=e.target.dataset.id;  
    11.     console.log("----"+_datasetId+"----");  
    12.     var _obj={};  
    13.     _obj.curHdIndex=_datasetId;  
    14.     _obj.curBdIndex=_datasetId;  
    15.     this.setData({  
    16.       tabArr: _obj  
    17.     });  
    18.   },  
    19.   onLoad: function( options ) {  
    20.     alert( "------" );  
    21.   }  
    22. });  


    demo.wxss:

     
    1. .tab{  
    2.     display: flex;  
    3.     flex-direction: row;  
    4. }  
    5. .tab-left{  
    6.      200rpx;  
    7.     line-height: 160%;  
    8.     border-right: solid 1px gray;  
    9. }  
    10. .tab-left view{  
    11.     border-bottom: solid 1px red;  
    12. }  
    13. .tab-left .active{  
    14.     color: #f00;  
    15. }  
    16. .tab-right{  
    17.     line-height: 160%;  
    18. }  
    19. .tab-right .right-item{  
    20.     padding-left: 15rpx;  
    21.     display: none;  
    22. }  
    23. .tab-right .right-item.active{  
    24.     display: block;  
    25. }  


        最终演示效果如下:

    以上仅是个人方案,如果有更好的方案,欢迎提出~

  • 相关阅读:
    学习笔记—二进制和精度问题
    学习笔记—Buffer的常用方法与实现
    学习笔记—Node中第三方模块
    学习笔记—npm的介绍与使用
    .NET中序列化(一)
    .NET中序列化(二)
    JavaScript在多浏览器下杂谈1for循环
    .NET中序列化(三)
    DLCB额度切分
    DLCB解决问题的思路
  • 原文地址:https://www.cnblogs.com/0liaoyi/p/6008628.html
Copyright © 2011-2022 走看看