微信小程序自定义tabbar、自定义导航、分包

自定义tabbar

在项目根目录下创建custom-tab-bar文件夹,在该文件夹下创建组件
自定义tabbar作为一个自定义组件进行构建。构建完毕后在app.json中的tabBar选项中配置custom,并配置完整的list选项。

"tabBar": {
    "color": "#000",
    "selectedColor": "#d8e106",
    "list": [{
        "pagePath": "pages/tabbar/index/index",
        "selectedIconPath": "/pages/images/tabbar/index_selected.png",
        "iconPath": "/pages/images/tabbar/index.png",
        "text": "首页"
      },
      {
        "pagePath": "pages/tabbar/cinema/cinema",
        "selectedIconPath": "/pages/images/tabbar/cinema_selected.png",
        "iconPath": "/pages/images/tabbar/cinema.png",
        "text": "影院"
      },
      {
        "pagePath": "pages/tabbar/film/film",
        "selectedIconPath": "/pages/images/tabbar/film_selected.png",
        "iconPath": "/pages/images/tabbar/film.png",
        "text": "电影"
      },
      {
        "pagePath": "pages/tabbar/mine/mine",
        "selectedIconPath": "/pages/images/tabbar/mine_selected.png",
        "iconPath": "/pages/images/tabbar/mine.png",
        "text": "我的"
      }
    ],
    "custom": true
  }

然后在app.json中的components配置中引入tababr组件。

{
"components":"/custom-tab-bar/index"
}

小程序会自动引入页面作为tabbar,不需要在wxml中手动书写custom-tab-bar组件。

当在app.json中开启 lazyCoding 时自定义tabbar在第一次渲染时不会注入自定义tabbar,看不到tabbar显示,这个时候需要在页面中手动写入组件。

自定义tababr使用fixed布局在底部,不会作为page内的元素。

使用自定义tabbar后,需要在每个使用tababr的页面中设置当前tababr的选中状态。当点击自定义tabbar时需要手动跳转到对应的页面。

自定义导航

自定义导航使用自定义组件进行自定义。需要在app.json中开启navigationStyle:custom并在usingComponent中引入导航组件。自定义导航需要在使用自定义组件的页面中手动书写组件,否则不显示。

 "navigationStyle": "custom",
 "nav": "/components/nav/nav"

如果自定义导航组件使用absolute定位在顶部,当页面高度超过可显示高度后,上滑页面导航也会上滑,如果自定义导航组件使用fixed定位在顶部,当页面高度超过可显示高度后,上滑页面导航会固定不动。
当自定义导航脱离文本流时,页面的顶部内容会被导航遮盖。需要设置page的padding-top或者使用空白元素占位。
在这里插入图片描述

自定义导航的高度是右上角的菜单胶囊的高度和其顶部的距离之和。

使用自定义导航和自定义tababr后可以把中间显示区域设置为固定的高度使用scroll-view进行滚动。

分包

微信小程序上传对包的大小有限制,每个包最大2mb,因此通过分包减小单独包的大小。
在app.json中配置subpackages字段。每个分包中都有pages文件夹

 "subpackages": [{
      "root": "packages/property", // 分包路径
      "pages": [
        "pages/property/property" // 分包中的页面的路径
      ]
    },
    {
      "root": "packages/parking",
      "pages": [
        "parking/pages/car_number_pay/car_number_pay"
      ]
    }
  ]

使用分包后可以使用分包预加载,在app.json中配置preloadRule字段。分包预下载是当进入某个页面时下载配置的packages中的分包。

 "preloadRule": {
    "pages/tabbar/index/index":{ // 进入的页面的路径
      "network": "all",
      "packages": ["packages/property"]
    }
  }
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

前端御书房

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值