果玩软件园:为用户提供海量热门软件、游戏等手机资源下载服务!

装机必备热门标签玩游戏装软件BT游戏H5游戏看教程专题游戏盒子手机版

果玩软件园

所在位置:首页 > 资讯教程 > 软件教程 >  > 详情

如何在微信小程序制作九宫格界面的导航?

文章来源:网络作者:鬓上发布时间:2026-05-29 23:59:25

GM盒子
GM盒子(高返利版)
GM手游福利平台,免费送首充,上线送VIP,免费领元宝和代金券。
Ready

  今天小编给大家讲解如何在微信小程序制作九宫格界面的导航?有需要或者有兴趣的朋友们可以看一看下文,相信对大家会有所帮助的。

  小程序是长在微信上的,是移动端的界面,为了能够更方便的使用,我们常常希望使用九宫格界面的方式作为导航,那要如何实现呢?

  基于一个简单的思考,九宫格就是三行三列,如果把行作为一个单位,再将每一行分成三列,那是不是就可以了?我们实践一下。

  首先来考虑九宫格数据的生成,每一个格子需要有一个图标、一个标题、一个便于跳转的路由,那天现在我们有九个页面,所以定义一个一维数组即可。为了更好的进行后续的配置,我们将这个数组独立到一个文件中routes.js,然后将其在index.js页面中引用,routes放到index的目录下。

  [javascript]

  var PageItems =

  [

  {

  text: \'格子1\',

  icon: \'../../images/c1.png\',

  route: \'../c1/c1\',

  },

  {

  text: \'格子2\',

  icon: \'../../images/c2.png\',

  route: \'../c2/c2\',

  },

  {

  text: \'格子3\',

  icon: \'../../images/c3.png\',

  route: \'../c3/c3\',

  },

  {

  text: \'格子4\',

  icon: \'../../images/c4.png\',

  route: \'../c4/c4\',

  },

  {

  text: \'格子5\',

  icon: \'../../images/c5\',

  route: \'../c5/c5\',

  },

  {

  text: \'格子6\',

  icon: \'../../images/c6.png\',

  route: \'../c6/c6\',

  },

  {

  text: \'格子7\',

  icon: \'../../images/c7.png\',

  route: \'../c7/c7\',

  },

  {

  text: \'格子8\',

  icon: \'../../images/c8\',

  route: \'../c8/c8\',

  },

  {

  text: \'格子9\',

  icon: \'../../images/c9.png\',

  route: \'../c9/c9\',

  }

  ];

  module.exports = {

  PageItems: PageItems

  }

  在index.js页面中我们引用routes.js,然后得到数据PageItems,但PageItems是一维数组,而我们前面思考是要用一行三列为一个组的,所以需要将这一维数组进行重新组合,最直接的方法就是生成一个数组,每个数组的元素又包含了一个只有三个元素的一维数组,代码如下[javascript]

  //index.js

  //获取应用实例

  var app = getApp()

  var routes = require(\'routes\');

  Page({

  data: {

  userInfo: {},

  cellHeight: \'120px\',

  pageItems: []

  },

  //事件处理函数

  onLoad: function () {

  var that = this

  console.log(app);

  //调用应用实例的方法获取全局数据

  app.getUserInfo(function (userInfo) {

  wx.setNavigationBarTitle({

  title: \'全新测试追踪系统-\' + userInfo.nickName,success: function (res) {// success}

  })

  that.setData({

  userInfo: userInfo

  })

  var pageItems = [];

  var row = [];

  var len = routes.PageItems.length;//重组PageItemslen = Math.floor((len + 2) / 3) * 3;for (var i = 0; i < len; i++) {if ((i + 1) % 3 == 0) {

  row.push(indexs.PageItems[i]);

  pageItems.push(row);

  row = [];

  continue;

  }

  else {

  row.push(indexs.PageItems[i]);

  }

  }

  wx.getSystemInfo({

  success: function (res) {

  var windowWidth = res.windowWidth;

  that.setData({

  cellHeight: (windowWidth / 3) + \'px\'

  })

  },

  complete: function () {

  that.setData({

  pageItems: pageItems

  })

  }

  })

  })

  }

  })

  在index.wxml中,我们来布局界面,由于每一个格子都是一样的,只是数据不一样,所以想到用模板来呈现。为此,我们先做一个单元格的模板面cell.wxml.

  [javascript]

  

  

  

  

  

  

  {{text}}

  

  

  

  这里看到两个大括号内套的是从外面传入的数据,然后在里面可以进行简单的逻辑判断,以便于更好的呈现。比如text==null的时候,我们希望呈现的是一个空背景的格子,在有数据的时候我们希望呈现一个含背景的格子,所以"{{text==null||text.length==0?\'pages-icon-wrapper-no-bg\':\'pages-icon-wrapper\'}}".

  另外一点,由于我们是将该界面文件作为模板的,所以必须要用template标记来包住,同时命一个名字name,这样在引用模板的地方才可以识别调用。

  现在我们在index.wxml中引用这个模板

  [javascript]

  

  

  

  

  

  

  

  

  

  

  

  

  

  模板的引用使用import来引用,在调用的地方使用template和is,其中is指定的是cell.wxml中的name。item[0]、item[1]、item[2]是循环传入的数据,cellHeight是在index.js的data中存放的数据。在将数据传入到模板内部时,框架会将其展开在字段的形式,即key-value对,所以再看cell.wxml文件,就会发现内部是直接使用key来作为数据的。

  将数据呈现到界面之后,我们需要相当的样式来配合,index.wxss代码如下。

  [css]

  /**index.wxss**/

  .pages-container {

  height: 100%;

  display: flex;

  flex-direction: column;

  box-sizing: border-box;

  padding-top: 10rpx;

  padding-bottom: 10rpx;

  }

  .pages-title-bg {

  width: 100%;

  }

  .pages-wrapper {

  }

  .pages-row {

  width: 100%;

  display: flex;

  flex-direction: row;

  justify-content: space-around;

  }

  .pages-item {

  position: relative;

  padding: 10rpx;

  width: 33%;

  background-color: #fff;

  border: #ddd solid 1px;

  }

  .pages-icon-wrapper {

  display: flex;

  justify-content: space-around;

  align-items: center;

  margin: 10rpx;

  border-radius: 30%;

  height: 75%;

  background:#00CD0D;

  }

  .pages-icon-wrapper-no-bg {

  display: flex;

  justify-content: space-around;

  align-items: center;

  margin: 10rpx;

  height: 75%;

  }

  .pages-icon {

  width: 100rpx;

  height: 100rpx;

  }

  .pages-text-wrapper {

  text-align: center;

  }

  .pages-text {

  font-weight: bolder;

  }

  效果如下图

  我们模板中使用navigator元素来呈现格子,所以每个格子自然就可以导航了。

  以上就是如何在微信小程序制作九宫格界面的导航的全部内容了,大家都学会了吗?

End
复制本文链接资讯文章为果玩软件园所有,未经允许不得转载。
热门游戏MORE+
相关资讯MORE+
最新录入
热门资讯
新游新品榜
手机游戏
休闲益智
赛车竞速
棋牌桌游
角色扮演
动作射击
体育竞技
经营养成
策略塔防
冒险解谜
音乐游戏
手游辅助
H5游戏
BT游戏
手机软件
社交聊天
系统工具
时尚购物
旅游出行
影音播放
生活实用
办公学习
资讯阅读
拍摄美化
游戏辅助
健康医疗
地图导航
小说漫画
安全防护
育儿亲子
手游下载
梦想三国之勇往直前0....
炼仙传说0.1折
不可思议的刀剑与魔法...
逍遥浪人
奇幻梦旅人
玄影0.1折
点击冒险之旅(0.1折特...
天神赵子龙0.1折
九州异兽记0.1折
龙魂魔法0.1折
装机软件
爱奇艺电脑版
Steam下载管家 2026最...
360游戏大厅
GoLink加速器
3DM驱动大师
夸克
豆包电脑版
360C盘扩容大师
360录屏
360极速浏览器
精选专题
手机游戏专题
手机软件专题
电脑软件专题
电脑游戏专题
游戏排行榜
手游排行榜
软件排行榜
BT排行榜
电脑软件排行榜
电脑游戏排行榜