uni-app uni-popup使用uni-grid布局重叠
uni-app uni-popup使用uni-grid布局重叠
类别 | 信息 |
---|---|
产品分类 | uniapp/小程序/微信 |
PC开发环境 | Mac |
操作系统版本 | Ventura 13.6.6 |
HBuilderX类型 | 正式 |
HBuilderX版本 | 4.24 |
工具版本号 | 1.06.2307260 |
基础库版本 | 3.5.8 |
项目创建方式 | HBuilderX |
示例代码:
<uni-popup ref="showpopup" type="center">
<view style="width:100%;border-radius: 20rpx;height: 500rpx;background-color: #FFFFFF;display: flex;flex-direction: column;">
<view style="width:100%;">
<uni-grid style="display: flex;align-items: center;justify-content: center;" :column="8" :show-border="false" >
<uni-grid-item v-for="(item,index) in listData" :index="index" :key="index">
<view style="display: flex;width: 100%;background-color: #FEECEA;height: 100%;border: 1rpx solid #FFFFFF;border-top:0rpx solid #FFFFFF;align-items: center;justify-content: center;">
<text style="flex: 1;color: #000000;text-align: center;font-size: 23rpx;">{{item.name}}</text>
</view>
</uni-grid-item>
</uni-grid>
</view>
</view>
</uni-popup>
操作步骤:
- uni-popup使用uni-grid布局重叠
预期结果:
- uni-popup使用uni-grid正常展示
实际结果:
- uni-popup使用uni-grid布局重叠
bug描述:
- uni-popup使用uni-grid布局重叠
感谢反馈,之后会对这种情况进行调整,让grid可以方便的使用
现在是不是计算了每个格子的宽高那些,而popup有动画还没渲染完成导致的
回复 靐齉齾麤龖龗: 暂时判断是宽度不够引起的,且微信小程序渲染有问题。可以看我下面的图片
你好,这个问题彻底解决可能还需要些时间,经过测试给您一个临时解决方案:
在 popup 中内部的内容加上一个 v-if 进行控制,在 open 之前修改为 true
<uni-popup ref=“popup” background-color="#fff" @change=“change” border-radius=“10px 10px 0 0”>
<view style="width: 500rpx;height: 200rpx;" v-if="show">
<uni-grid :column="4" :showBorder="true">
<uni-grid-item>
<text class="text">文本</text>
在uni-app中,使用uni-popup
组件结合uni-grid
布局时,如果遇到布局重叠的问题,通常是因为样式或布局设置不当。以下是一个示例代码,展示如何在uni-popup
中正确使用uni-grid
布局,并确保布局不重叠。
首先,确保你的项目中已经引入了uni-ui
组件库,或者你有自定义的样式处理重叠问题。
示例代码
1. 页面模板 (template)
<template>
<view>
<button @click="showPopup = true">打开弹窗</button>
<uni-popup ref="popup" :show="showPopup" mode="bottom" @close="showPopup = false">
<view class="popup-content">
<uni-grid :column="4">
<uni-grid-item v-for="(item, index) in gridItems" :key="index">
<view class="grid-item">{{ item }}</view>
</uni-grid-item>
</uni-grid>
</view>
</uni-popup>
</view>
</template>
2. 脚本部分 (script)
<script>
export default {
data() {
return {
showPopup: false,
gridItems: ['Item 1', 'Item 2', 'Item 3', 'Item 4', 'Item 5', 'Item 6', 'Item 7', 'Item 8']
};
}
};
</script>
3. 样式部分 (style)
<style scoped>
.popup-content {
padding: 20px;
background-color: #fff;
}
.grid-item {
display: flex;
align-items: center;
justify-content: center;
height: 100px;
border: 1px solid #ddd;
box-sizing: border-box;
}
/* 确保uni-grid和uni-grid-item的样式不会导致重叠 */
uni-grid {
width: 100%;
}
uni-grid-item {
flex-shrink: 0; /* 防止内容过多时项目缩小导致重叠 */
}
</style>
解释
- 模板部分:使用
uni-popup
组件来创建一个底部弹窗,并在弹窗内容中使用uni-grid
布局。uni-grid-item
通过v-for
指令循环渲染。 - 脚本部分:定义了弹窗的显示状态和网格项数据。
- 样式部分:为弹窗内容和网格项定义了基本样式。特别地,设置了
uni-grid-item
的flex-shrink
属性为0,以防止内容过多时项目缩小导致重叠。
这个示例代码提供了一个基本的框架,确保uni-popup
中的uni-grid
布局不会重叠。如果你遇到特定的问题,可能需要根据具体情况调整样式或布局逻辑。