资讯专栏INFORMATION COLUMN

微信小程序之选项卡

stormjun / 3543人阅读

摘要:我们在函数中通过获取设备的宽高来设置组件高度以及高度为导航栏的高度点击导航栏切换内容点击切换滑动内容切换导航栏滑动切换可滚动区域滚动最底刷新数据页面上拉触底事件的处理函数更新列表一个漂亮的选项卡就完成了完整案例

选项卡随处可见,微信小程序中也不例外,下面来写一个简单的小程序选项卡

思路

之前写过基于swiper的选项卡,在小程序中有swiper组件,毫无疑问这里要用到swiper组件

小程序中的swiper组件有个问题就是不能根据内容自适应高度,所以要通过wx.getSystemInfoSync获取设备高度设置swiper高度

小程序中的swiper组件中swiper-item内容超出可视区后无法滚动显示,所以这里要用到另一个组件scroll-view。

小程序中的swiper组件功能还是比较有限的,有待优化。

方案 1.首先在js中设置数据

</>复制代码

  1. data: {
  2. tabs: ["菜单一", "菜单二"],// 导航菜单栏
  3. curIdx:0,// 当前导航索引
  4. scrollHeight:0, //滚动高度 = 设备可视区高度 - 导航栏高度
  5. list:[],// 内容区列表
  6. },

在onLoad函数中填充数据

</>复制代码

  1. /**
  2. * 生命周期函数--监听页面加载
  3. */
  4. onLoad: function (options) {
  5. let list=[];
  6. for (let i=1;i<=30;i++){
  7. list.push(i)
  8. }
  9. this.setData({
  10. list: list
  11. });
  12. },
2.在WXML中循环渲染出导航

</>复制代码

  1. {{item}}
3.设置当前活动导航样式

</>复制代码

  1. /*初始化样式*/
  2. view, text, picker, input, button, image{
  3. display: flex;
  4. box-sizing: border-box;
  5. }
  6. /* 导航样式*/
  7. .swiper-tab {
  8. position: relative;
  9. width: 100%;
  10. height: 100rpx;
  11. justify-content: center;
  12. align-items: center;
  13. }
  14. .swiper-tab-item {
  15. background-color: #f3f3f3;
  16. width: 50%;
  17. height: 80rpx;
  18. justify-content: center;
  19. align-items: center;
  20. }
  21. .swiper-active{
  22. background-color: rgb(129, 190, 247);
  23. color: #fff;
  24. }
4.内容显示区

内容显示区使用swiper组件,swiper-item个数要与tabs数组长度 一致

</>复制代码

  1. 内容一{{item}}
  2. 内容二

小程序中的swiper组件有个问题就是不能根据内容自适应高度,所以要通过[wx.getSystemInfoSync][4]获取设备高度设置swiper高度
小程序中的swiper组件中swiper-item内容超出可视区后无法滚动显示,所以这里要用到另一个组件[scroll-view][5]。
我们在onShow函数中通过getSystemInfoSync获取设备的宽高来设置swiper组件高度以及scroll-view高度

</>复制代码

  1. onShow: function () {
  2. // 100为导航栏swiper-tab 的高度
  3. this.setData({
  4. scrollHeight: wx.getSystemInfoSync().windowHeight - (wx.getSystemInfoSync().windowWidth / 750 * 100),
  5. })
  6. },
5.点击导航栏切换内容

</>复制代码

  1. //点击切换
  2. clickTab: function (e) {
  3. this.setData({
  4. curIdx: e.currentTarget.dataset.current
  5. })
  6. },
6.滑动内容切换导航栏

</>复制代码

  1. //滑动切换
  2. swiperTab: function (e) {
  3. this.setData({
  4. curIdx: e.detail.current
  5. });
  6. },
7.可滚动区域滚动最底刷新数据

</>复制代码

  1. /**
  2. * 页面上拉触底事件的处理函数
  3. */
  4. onReachBottom: function () {
  5. // 更新列表
  6. let list = this.data.list;
  7. console.log(list)
  8. let lens = list.length
  9. for (let i = lens; i < lens+30; i++) {
  10. list.push(i)
  11. }
  12. this.setData({
  13. list: list
  14. });
  15. },

一个漂亮的选项卡就完成了

完整案例

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/97525.html

相关文章

  • 信小程序 bug 集中营

    摘要:利用这篇教程存储一些常用的微信小程序开发技巧,方便查找。但是第一,微信小程序是国内的,有中文文档,虽然它的文档说明有点坑,但好歹有文档,阅读理解对小伙伴们来说不是问题。 Create by jsliang on 2018-9-17 17:58:56 Recently revised in 2018-11-19 08:19:13  Hello 小伙伴们,如果觉得本文还不错,记得给个...

    he_xd 评论0 收藏0
  • 信小程序 bug 集中营

    摘要:利用这篇教程存储一些常用的微信小程序开发技巧,方便查找。但是第一,微信小程序是国内的,有中文文档,虽然它的文档说明有点坑,但好歹有文档,阅读理解对小伙伴们来说不是问题。 Create by jsliang on 2018-9-17 17:58:56 Recently revised in 2018-11-19 08:19:13  Hello 小伙伴们,如果觉得本文还不错,记得给个...

    PascalXie 评论0 收藏0
  • 信小程序 bug 集中营

    摘要:利用这篇教程存储一些常用的微信小程序开发技巧,方便查找。但是第一,微信小程序是国内的,有中文文档,虽然它的文档说明有点坑,但好歹有文档,阅读理解对小伙伴们来说不是问题。 Create by jsliang on 2018-9-17 17:58:56 Recently revised in 2018-11-19 08:19:13  Hello 小伙伴们,如果觉得本文还不错,记得给个...

    lordharrd 评论0 收藏0
  • hello-weapp信小程序最简示例教程

    摘要:仓库打开微信小程序官方开发文档,最好全篇看一遍,基本上就会了。 https://github.com/dingyiming... 仓库:https://github.com/dingyiming... 打开微信小程序官方开发文档,最好全篇看一遍,基本上就会了。 点击文档中 工具 选项卡中 下载工具页面 下载对应系统版本的微信开发者工具 注意:脱离微信开发者工具是不能调试的 好...

    Labradors 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<