`

微信小程序实现tabs选项卡

阅读更多

    选项卡在我们的日常开发中,使用的还是蛮多的,但是微信小程序中却没有直接提供选项卡组件,不过我们可以变通通过 scroll-viewswiper 组件来实现一个选项卡的功能。

 

需求:

    实现一个选项卡,选项卡的标题可能会比较多,当超过一屏时,需要可以滚动显示。选项卡的内容需要左右滑动显示。

 

实现思路:

    1、标题较多,使用 scroll-view 组件来显示即可。
    2、内容滑动,使用 swiper 组件来显示。

效果图:


 

代码实现:

1、页面布局 tabs.wxml 文件的编写

<view>
  <scroll-view scroll-x="{{true}}" class='top-nav-container' scroll-left="{{scrollLeft}}">
    <block wx:for="{{topNavs}}" wx:key='{{*this}}'>
      <view class='tab-item {{currentActiveNavIndex == index ? "active":""}}' data-current-index='{{index}}' bindtap='topNavChange'>
        {{item}}
      </view>
    </block>
  </scroll-view>
  <swiper bindchange="swiperChange" class='swiper-container' current='{{currentActiveNavIndex}}' bindtouchmove="touchmove">
    <block wx:for="{{topNavs}}" wx:key='{{*this}}'>
      <swiper-item style="overflow:scroll">
        <view>{{item}}</view>
      </swiper-item>
    </block>
  </swiper>
</view>

  注意:

           1、scroll-view scroll-x=true 表示开启横向滚动

           2、scroll-view scroll-left 表示表示横向滚动条的位置

           3、swiper 组件中的 current 表示当前所在滑块的 index,给这个变量赋值,可以直接滑动到这一屏。

 

2、样式编写 tabs.wxss 文件的编写

.top-nav-container{
  width: 100%;
  height: 60rpx;
  line-height: 60rpx;
  font-size: 14px;
  background-color: #CCC;
  vertical-align: middle;
  white-space: nowrap;
}

.top-nav-container .tab-item{
  display: inline-block;
  margin: 0rpx 30rpx;
}

.top-nav-container .tab-item.active{
  color: rgb(48, 121, 255);
  border-bottom: 4rpx solid #F00;
  line-height: 52rpx;
}

.swiper-container{
  height: calc(100vh - 60rpx);
  background-color: #00b26a;
  font-size: 14px;
}

3、js 控制 tabs.js 文件的编写

Page({
  data: {
    /**
     * 导航数据
     */
    topNavs: ['直播', '推荐', '世界杯', '生活', '萌宠', '娱乐', '游戏', '常用', '11111', '22222', '3333', '4444', '5555', '6666'],
    /**
     * 当前激活的当航索引
     */
    currentActiveNavIndex: 0,
    /**
     * 上一个激活的当航索引
     */
    prevActiveNavIndex: -1,
    /**
     * scroll-view 横向滚动条位置
     */
    scrollLeft: 0
  },
  /**
   * 顶部导航改变事件,即被点击了
   * 1、如果2次点击同一个当航,则不做处理
   * 2、需要记录本次点击和上次点击的位置
   */
  topNavChange: function(e) {
    var nextActiveIndex = e.currentTarget.dataset.currentIndex,
      currentIndex = this.data.currentActiveNavIndex;
    if (currentIndex != nextActiveIndex) {
      this.setData({
        currentActiveNavIndex: nextActiveIndex,
        prevActiveNavIndex: currentIndex
      });
    }
  },
  /**
   * swiper滑动时触发
   * 1、prevIndex != currentIndex 表示的是用手滑动 swiper组件
   * 2、prevIndex = currentIndex  表示的是通过点击顶部的导航触发的
   */
  swiperChange: function(e) {
    var prevIndex = this.data.currentActiveNavIndex,
      currentIndex = e.detail.current;
    this.setData({
      currentActiveNavIndex: currentIndex
    });
    if (prevIndex != currentIndex) {
      this.setData({
        prevActiveNavIndex: prevIndex
      });
    }
    this.scrollTopNav();
  },
  /**
   * 滚动顶部的导航栏
   * 1、这个地方是大致估算的
   */
  scrollTopNav: function() {
    /**
     * 当激活的当航小于4个时,不滚动
     */
    if (this.data.currentActiveNavIndex <= 3 && this.data.scrollLeft >= 0) {
      this.setData({
        scrollLeft: 0
      });
    } else {
      /**
       * 当超过4个时,需要判断是向左还是向右滚动,然后做相应的处理
       */
      var plus = this.data.currentActiveNavIndex > this.data.prevActiveNavIndex ? 60 : -60;
      this.setData({
        scrollLeft: this.data.scrollLeft + plus
      });
    }
    console.info(this.data.currentActiveNavIndex, this.data.prevActiveNavIndex, this.data.scrollLeft);
  }
})

    注意:

          1、 需要注意的地方可以看代码中的注释

 

完整代码:

选项卡代码:https://gitee.com/huan1993/weixin_mini_program_study/tree/master/pages/tabs

 

  • 大小: 298.9 KB
分享到:
评论

相关推荐

    微信小程序 实现tabs选项卡效果实例代码

    在微信小程序开发中,创建一个实现tabs选项卡效果的功能是一个常见的需求。这通常涉及到用户界面交互,使得用户可以通过点击不同的选项卡切换显示的内容。在这个实例中,我们将详细讲解如何使用微信小程序来创建一个...

    微信小程序-滑动选项卡.zip

    1. **wx:for**:这是微信小程序中的一个指令,用于循环渲染数组数据,通常结合`item`使用,例如`&lt;block wx:for="{{ tabs }}" wx:key="*this"&gt;`,这里的`tabs`是存储选项卡标题的数组。 2. **swiper组件**:微信小...

    微信小程序之选项卡的实现方法

    从事前端的同学们一定不会对选项卡陌生,不管是自己原生写的,还是各个UI框架里带的,我想大家都使用过很多选项卡,对选项卡的原理也足够清楚了,下面我们来在微信小程序里实现选项卡的功能。 微信小程序里没有自带...

    微信开发 js实现tabs选项卡效果

    微信开发中的tabs选项卡效果实现主要涉及前端技术中的JavaScript编程以及微信小程序的框架特性。在微信开发过程中,实现tabs选项卡效果是常见的用户交互需求,它涉及到页面组件的动态切换显示和样式变化。以下将详细...

    微信小程序 tabs选项卡效果的实现

    在微信小程序中,由于内置组件不提供直接的tabs选项卡功能,开发者需要自行实现这一常见交互效果。本文将详细介绍如何在微信小程序中创建一个自定义的tabs选项卡,并提供了具体的实例代码供参考。 首先,实现tabs...

    微信小程序自定义组件实现tabs选项卡功能

    在微信小程序中,实现自定义组件来创建tabs选项卡功能是一项常见的需求,这可以提高代码复用性和项目管理效率。本文将详细介绍如何通过编写自定义组件来实现这一功能。 首先,一个微信小程序自定义组件通常由四个...

    微信小程序实例教程:实现tabs选项卡效果

    在微信小程序中实现Tabs选项卡效果,可以帮助用户更方便地浏览和操作。 在微信小程序中实现Tabs选项卡效果需要使用小程序的组件和API。微信小程序的主要组件包括视图容器、基础内容、表单组件、导航、媒体组件等。...

    微信小程序底部导航+顶部table选项卡

    在微信小程序开发中,底部导航和顶部表格选项卡是常见的用户界面组件,它们为用户提供了一种直观、便捷的导航方式,使用户能够轻松地在不同的功能模块之间切换。本篇文章将详细探讨如何在微信小程序中实现这样的设计...

    微信小程序自定义可滑动顶部TabBar选项卡实现页面切换功能示例

    通过以上介绍,可以看出实现自定义的顶部滑动TabBar选项卡以及页面切换功能涉及到对微信小程序中多个组件的理解和应用,包括`scroll-view`、`view`、`swiper`等。开发者需要掌握如何结合布局、样式和事件处理来创建...

    微信小程序实现tab左右切换效果

    在微信小程序中实现Tab左右切换效果是许多开发者在进行页面布局时经常需要完成的功能。Tab切换效果一般用于页面底部或顶部,用户可以左右滑动或点击切换不同内容模块的显示。微信小程序提供了实现Tab切换效果的组件...

    微信小程序实例:实现tabs选项卡效果

    正好赶上这个热潮,这几天先把小程序技术文档看了个遍,就直接着手写案例了。很多组件微信内部已经封装完了,正好发现没有tab选项卡效果,这两天正好研究了下。思路如下:  首先点击导航的时候需要两个变量,一个...

    自写的小程序tabs组件

    本组件“tabs”即为一个自定义的选项卡组件,它解决了微信小程序原生tabs组件限制数量(最多5个)以及配置较为固定的问题,提供了更灵活的定制化功能。 首先,我们来看“自写的小程序tabs组件”的核心特点: 1. **...

    微信小程序demo:网易云课堂:tab切换菜单

    在这个“微信小程序demo:网易云课堂:tab切换菜单”的项目中,我们将探讨如何利用微信小程序框架来实现一个功能完备的网易云课堂风格的tab切换菜单。 首先,我们需要了解微信小程序的基本结构。一个小程序由多个...

    Android仿微信下拉列表实现(加顶部菜单栏和底部菜单栏)

    底部菜单栏通常使用`BottomNavigationView`,它可以轻松地添加多个底部选项卡。 ```xml android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" ...

    xiesantao-swiperTabs-master.zip

    这个项目很可能是一个用于实现滑动选项卡功能的组件库,特别适合在微信小程序开发中使用。在微信小程序中,TAB(选项卡)是一种常见的用户界面元素,它允许用户在不同的内容区域之间进行切换,提供良好的导航体验。 ...

    在线点餐小程序完整源码+说明(扫码点餐)(外卖与自取)(支持多门店模式)(前后端分离).zip

    【资源说明】 1、该资源内项目代码都是经过测试运行成功,功能正常的情况下才上传的,请放心下载使用...在线点餐小程序源码+项目说明(扫码点餐)(外卖与自取)(支持多门店模式)(Java,uniapp(vue3)(前后端分离).zip

Global site tag (gtag.js) - Google Analytics