当前位置:首页 > uni-app

uniapp四宫格布局

2026-03-26 12:52:14uni-app

四宫格布局实现方法

在UniApp中实现四宫格布局,可以通过Flex布局或Grid布局完成。以下是两种常用方法:

Flex布局方案

使用flex-wrap: wrap让元素自动换行,结合width: 50%实现2x2排列:

<template>
  <view class="grid-container">
    <view class="grid-item" v-for="(item, index) in 4" :key="index">
      <!-- 内容区 -->
    </view>
  </view>
</template>

<style>
.grid-container {
  display: flex;
  flex-wrap: wrap;
  width: 100%;
}

.grid-item {
  width: 50%;
  height: 200rpx;
  box-sizing: border-box;
  padding: 10rpx;
}
</style>

Grid布局方案

通过CSS Grid实现更精确的控制:

<template>
  <view class="grid-container">
    <view class="grid-item" v-for="(item, index) in 4" :key="index">
      <!-- 内容区 -->
    </view>
  </view>
</template>

<style>
.grid-container {
  display: grid;
  grid-template-columns: 1fr 1fr;
  grid-template-rows: 1fr 1fr;
  gap: 10rpx;
  width: 100%;
  height: 400rpx;
}

.grid-item {
  background-color: #f0f0f0;
}
</style>

动态数据绑定示例

结合数据循环渲染四宫格内容:

<template>
  <view class="grid-container">
    <view 
      class="grid-item" 
      v-for="(item, index) in gridData" 
      :key="index"
      @click="handleClick(item)"
    >
      <image :src="item.icon" mode="aspectFit"/>
      <text>{{item.title}}</text>
    </view>
  </view>
</template>

<script>
export default {
  data() {
    return {
      gridData: [
        { icon: '/static/icon1.png', title: '功能1' },
        { icon: '/static/icon2.png', title: '功能2' },
        { icon: '/static/icon3.png', title: '功能3' },
        { icon: '/static/icon4.png', title: '功能4' }
      ]
    }
  },
  methods: {
    handleClick(item) {
      uni.showToast({ title: `点击了${item.title}` })
    }
  }
}
</script>

样式优化技巧

添加间距和视觉效果:

.grid-item {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  border-radius: 12rpx;
  margin: 10rpx;
  box-shadow: 0 2rpx 6rpx rgba(0,0,0,0.1);
}

.grid-item image {
  width: 80rpx;
  height: 80rpx;
  margin-bottom: 15rpx;
}

.grid-item text {
  font-size: 26rpx;
  color: #333;
}

响应式适配方案

通过计算属性实现不同屏幕尺寸适配:

computed: {
  itemSize() {
    const systemInfo = uni.getSystemInfoSync()
    return (systemInfo.windowWidth - 30) / 2
  }
}

在模板中使用计算属性:

uniapp四宫格布局

<view 
  class="grid-item" 
  :style="{width: itemSize + 'px', height: itemSize + 'px'}"
>

注意事项

  • 在H5端使用vw/vh单位可能更灵活
  • 小程序中避免使用百分比边距,改用固定rpx值
  • 图片资源建议使用绝对路径/static/
  • 点击事件建议添加hover-class提升交互体验

标签: 格布uniapp
分享给朋友:

相关文章

uniapp和vue有什么区别

uniapp和vue有什么区别

uniapp和vue的区别 1. 定位与用途 Vue:一个渐进式JavaScript框架,专注于构建用户界面,适用于开发单页应用(SPA)或复杂前端项目。 UniApp:基于Vue.js的跨…

uniapp样式库

uniapp样式库

uniapp 常用样式库推荐 uView UI uView 是专为 uniapp 设计的多端兼容 UI 框架,提供丰富的组件和工具类。支持 Vue3 组合式 API,内置主题定制功能,常用于快速构建企…

uniapp接入

uniapp接入

接入UniApp的基本流程 UniApp是一个基于Vue.js的跨平台开发框架,支持一次开发,多端发布。以下是接入UniApp的基本流程: 环境准备 确保已安装Node.js(建议版本12+)和HB…

uniapp gpio

uniapp gpio

在 uniapp 中直接操作 GPIO(通用输入输出)通常需要依赖原生平台的硬件接口,因为 uniapp 本身是基于前端技术的跨平台框架,不直接提供硬件访问能力。以下是实现 GPIO 控制的几种方法:…

uniapp广播

uniapp广播

全局事件通信 在UniApp中实现广播功能可通过全局事件机制完成,适用于跨页面或组件通信。使用uni.$emit、uni.$on、uni.$off等方法实现事件的触发、监听与移除。 发送广播(触发事…

uniapp 摇杆

uniapp 摇杆

uniapp 实现虚拟摇杆的方法 在uniapp中实现虚拟摇杆功能,通常需要结合canvas绘制和触摸事件监听。以下是具体实现方案: 基础摇杆实现 创建canvas画布 在template中添加c…