微信小程序-九宫格gridView封装实现

大家好,刚开始玩微信小程序,实现了个九宫格gridView小封装,记录自己的学习历程,同时分享给大家希望带给大家一点方便。无入侵可以全局引用使用哦。
	扫一扫看是不是你想要的效果

在这里插入图片描述

组件部分代码:

wxml文件

<view class='grid-item-container'>
  <block wx:for="{{itemDatas}}" wx:key="index">
    <view class='grid-item-child' bindtap='clickItem' data-text="{{index}}">
      <view>
        <image class="grid-item-image" src="{{item.src}}" mode='widthFix'/>
        <text class='grid-item-label'>{{item.title}}</text>
      </view>
    </view>
  </block>
</view>

css样式

在这里插入代码片

/*
九宫格容器布局样式
*/
.grid-item-container {
display: -webkit-flex;
display: flex;
align-items: center;
justify-content: space-between;
flex-wrap: wrap;
border-top: 1rpx solid #D9D9D9;
}

/*
item容器样式
*/
.grid-item-child {
display:flex;
display: -webkit-flex;
justify-content:center;
flex-direction: column;
flex-wrap: wrap;
float: left;
width: 33.33333333%;
height: 200rpx;
box-sizing: border-box;
background-color: #FFFFFF;
border-right: 1rpx solid #D9D9D9;
border-bottom: 1rpx solid #D9D9D9;
}

/*
icon样式
*/
.grid-item-image {
width: 40%;
display:flex;
display: -webkit-flex;
margin-left: 30%;
margin-top: 5rdx;
justify-content:center;
}

/*
文本样式
*/
.grid-item-label {
display:flex;
display: -webkit-flex;
justify-content:center;
color: #666;
font-size: 14px;
}

js文件

Component({
  /**
   * 组件的属性列表
   */
  properties: {
    itemDatas: {
      type: Array
    }
  },

   /**
   * 页面数据源
   */
  data: {
    
  },

  /**
   * 组件的方法列表
   */
  methods: {
    //itemt 点击
    clickItem(e){
      
         // 将最传递到页面
       this.triggerEvent('itemClick', {index:e.currentTarget.dataset.text}, {})
    }
  }
})

外部使用

<w-grid itemDatas="{{itemDatas}}" bind:itemClick="itemClick"></w-grid>

调用js文件

// pages/other.js
Component({
  /**
   * 组件的属性列表
   */
  properties: {
   
  },

  /**
   * 组件的初始数据
   */
  data: {
    itemDatas: [
       { src:"图标",
        url:"跳转页面"  
   }
  ]
  },

  /**
   * 组件的方法列表
   */
  methods: {
    itemClick(e){
      console.log(e.detail.index)
        //跳转 订阅列表页面
        wx.navigateTo({
          url: this.data.itemDatas[e.detail.index]["url"]
        })
    }
  }
})

结束,欢迎转载,欢迎大家评论区多提意见,觉得有帮助的可以关注支持我。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
GridView 是一种常用的布局方式,可以在小程序中快速实现多项展示的效果。以下是使用微信小程序GridView 的一些基本步骤: 1. 新建一个页面,例如 `pages/index/index`,并在 `index.wxml` 文件中添加以下代码: ```html <view class="grid-view"> <view wx:for="{{list}}" wx:key="index" class="grid-item"> <image src="{{item.img}}" mode="aspectFill" class="grid-img"></image> <text class="grid-text">{{item.title}}</text> </view> </view> ``` 2. 在 `index.js` 文件中添加数据: ```javascript Page({ data: { list: [ { img: '/images/1.png', title: 'item1' }, { img: '/images/2.png', title: 'item2' }, { img: '/images/3.png', title: 'item3' }, { img: '/images/4.png', title: 'item4' }, { img: '/images/5.png', title: 'item5' }, { img: '/images/6.png', title: 'item6' } ] } }) ``` 3. 在 `index.wxss` 文件中添加样式: ```css .grid-view { display: flex; flex-wrap: wrap; justify-content: space-between; padding: 10rpx; } .grid-item { width: calc(50% - 5rpx); margin-bottom: 10rpx; display: flex; flex-direction: column; align-items: center; } .grid-img { width: 100%; height: 300rpx; } .grid-text { font-size: 28rpx; color: #333333; margin-top: 10rpx; } ``` 以上代码就可以实现一个简单的 GridView 布局,其中 `list` 是一个数组,用于存储每个 item 的数据。在 `wx:for` 循环中,使用 `item` 获取每个 item 的数据,然后通过 `{{}}` 语法将数据绑定到模板中。在样式中,使用 `flex` 布局实现了每行两个 item 的效果,并设置了一个 `margin-bottom` 属性用于分隔每一行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值