uniapp出现 下拉框等组件被遮挡 的分析

目录

  • [1. 问题所示](#1. 问题所示)
  • [2. 代码复现](#2. 代码复现)
  • [3. 解决方法](#3. 解决方法)
    • [3.1 下拉框被遮挡](#3.1 下拉框被遮挡)
    • [3.2 uni-collapse-item 无法下拉的问题](#3.2 uni-collapse-item 无法下拉的问题)

1. 问题所示

下拉框被遮挡的问题:

uni-collapse-item组件无法下拉的问题:

2. 代码复现

博主的代码精简如下:

html 复制代码
<template>
	<view>
		<uni-forms v-model="ArchiveVO">
			<uni-collapse style="overflow: visible;">			
				<uni-collapse-item title="桥吊情况" :open="false">
					<view class="collapse-item-content">
						<uni-forms-item label="船上桥吊数量">
							<uni-easyinput v-model="ArchiveVO.onboardCrane"></uni-easyinput>
						</uni-forms-item>
						<uni-forms-item label="船吊位置在最边上的位置需要">
							<uni-easyinput v-model="ArchiveVO.onboardCranePosition"></uni-easyinput>
						</uni-forms-item>
						<uni-forms-item label="船吊是否影响开板">
							<uni-data-select
								v-model="ArchiveVO.craneOpeningEffect"
								:localdata="getDictCacheByCode('is_ship_data_valid')"
							></uni-data-select>
						</uni-forms-item>
					</view>
				</uni-collapse-item>
				
				<uni-collapse-item title="加固要求" :open="false">
					<view class="collapse-item-content">
						<uni-forms-item label="加固要求">
							<uni-easyinput v-model="ArchiveVO.reinforcementRequirements"></uni-easyinput>
						</uni-forms-item>
					</view>
				</uni-collapse-item>
				
				<!-- is_ship_data_valid -->
			</uni-collapse>
		</uni-forms>
		<view class='submitBtnView'>
			<button type="primary" style="width: 80%;" @click="submit">提交</button>
		</view>
	</view>
</template>

<style>
/* #ifndef APP-NVUE */
  page {
    display: flex;
    flex-direction: column;
    box-sizing: border-box;
    background-color: #fff;
    min-height: 100vh; /* 增加视口高度 */
    height: auto;
  }

  view {
    font-size: 14px;
    line-height: inherit;
  }

  /* #endif */
.collapse-item-content{
	width: 90%;
	margin-left: 5%;
	display: block;
	overflow: visible;

}
.submitBtnView{
	position: fixed; /* 固定在屏幕上 */
	bottom: 0; /* 距离底部为0像素 */
	left: 0; /* 左边界与视口左侧对齐 */
	width: 100%; /* 宽度等于视口宽度 */
	padding: 10px; /* 添加内边距(如果需要)*/
	background-color: #fff;
	z-index: 99999; /* 确保按钮在下层 */
}
</style>

3. 解决方法

3.1 下拉框被遮挡

可能涉及 uni-collapse-item 的内容布局方式和下拉框的定位冲突

由于 uni-collapse-item 内的内容可能受限于父级容器的 overflow 设置,下拉框无法超出父级容器的边界显示

这种情况只能增加底部空间

css中的last-child语法

css 复制代码
:last-child {
  margin-bottom: 100px; /* 视情况增加足够的底部空间 */
}

或者直接在单个组件上:

html 复制代码
<uni-forms-item label="风险等级">
	<uni-data-select
		v-model="ArchiveVO.riskLevel"
		:localdata="getDictCacheByCode('ship_risk_level')"
		style="margin-bottom: 100px"
	></uni-data-select>
</uni-forms-item>

后续我发现这种情况是不适用:(以下方式对我都不适用,诸位可尝试下)

  • 确保z-index值适当:可以通过CSS设置下拉框的z-index值,确保它高于页面上其他元素的层级,从而避免被遮挡。例如,可以给下拉框设置一个较高的z-index值

  • 使用overflow属性:在父容器上设置overflow: visible;,以确保子元素的下拉部分可以显示在父容器之外

css 复制代码
.collapse-item-content {
  position: relative; /* Ensure positioning context */
}

.dropdown {
  position: relative; /* Or absolute */
  z-index: 1000; /* Adjust as needed */
}

3.2 uni-collapse-item 无法下拉的问题

由于页面布局高度未能自适应,或者是由固定在底部的按钮遮挡了内容

可以尝试以下方式进行优化:

方案一:为最外层的 uni-collapse 或页面增加内边距,避免内容被底部按钮遮挡

css 复制代码
.uni-collapse {
  padding-bottom: 100px; /* 确保最下面的collapse item有足够空间展开 */
}

方案二:取消按钮的固定位置

如果底部按钮的固定位置导致了内容的遮挡,可以考虑将按钮的定位方式改为非固定,并确保页面高度能够包含所有内容:

css 复制代码
.submitBtnView {
  position: relative; /* 改为相对定位,避免遮挡内容 */
  bottom: 0;
}

截图如下:

相关推荐
计算机专业源码3 小时前
PHP+uniapp微信小程序基于Android系统的旅游攻略系统cxj499
微信小程序·uni-app·php
程楠楠&M3 小时前
uni-app功能 1. 实现点击置顶,滚动吸顶2.swiper一个轮播显示一个半内容且实现无缝滚动3.穿透修改uni-ui的样式
javascript·ui·uni-app
程序员阿龙5 小时前
计算机毕业设计之:基于uni-app的校园活动信息共享系统设计与实现(三端开发,安卓前端+网站前端+网站后端)
前端·uni-app·移动端开发·校园应用开发·实时信息共享·信息系统设计与实现·校园活动管理
diygwcom13 小时前
uniapp uview扩展u-picker支持日历期间 年期间 月期间 时分期间组件
uni-app
南风与鱼19 小时前
软件测试 BUG 篇
bug·测试
破z晓19 小时前
uniapp 整合 OpenLayer3
uni-app
applebomb19 小时前
UniApp一句话经验: px -> rpx动态转换和动态元素区域的获取
javascript·typescript·uni-app·rpx·动态区域
yy_demo19 小时前
uniApp实现APP内自更新
uni-app
涔溪21 小时前
uni-app开发流程(开发、预览、构建和发布过程)
uni-app