作者:马啸远
时间:2025年4月8日
目录
问题描述
下拉框被遮挡,明明有内容,我保证有,下边有很多很多。这个情况在web谷歌上是没有的,但是在真机运行上有,所以前端开发要多测试,注意不同平台的渲染差异。

第二个搜索框更是被完全遮挡

对应代码如下
js
<uni-card :spacing="'0px'" margin="0px" :padding="'0px'" :is-shadow="false" class="searchBox" >
<uni-combox
v-model="searchCameraName"
emptyTips="不存在该摄像机名称"
:candidates="cameraList"
placeholder="请输入并选择摄像机名称"
class="custom-select"
@input="handleCameraNameInput"
></uni-combox>
解决方法
首先是解决思路:把页面分为搜索框部分 和历史搜索部分,看看到底是谁遮挡了下拉框,把历史搜索部分全部删掉,下拉框还是被遮挡,说明不是这部分css样式的原因。那就是uni-combox这部分,于是问题要么是uni-combox,要么是uni-card。
写了一个div放到uni-card里边,发现下拉框一样被遮挡,说明不是uni-combox的问题。PS: 这是我的实习导师做出来之后教我的。于是问题就在uni-card。
尝试了很多css样式调整,如设置uni-card的style="overflow: auto";z-index=99999;position=fixed等,于是老师把这个uni-card删除了,换成了view。就好了
实现代码
js
<view :spacing="'0px'" margin="0px" :padding="'0px'" :is-shadow="false">
原因分析
在 UniApp 的 uni-card
组件中,默认情况下不允许内容溢出卡片范围 ,因为 uni-card
组件默认会有样式控制溢出行为。不过你可以通过 CSS 来调整它的 overflow
属性,使其允许内容溢出。
如何让 uni-card
允许内容溢出?
方法 1:直接修改 uni-card
的样式
html
<uni-card style="overflow: visible;">
<!-- 这里的内容可以溢出卡片 -->
<view style="width: 200%; height: 200%; background: red;">
这个内容会超出卡片范围
</view>
</uni-card>
方法 2:使用 CSS 全局覆盖(推荐)
css
/* 在 App.vue 或页面的 style 里 */
uni-card {
overflow: visible !important;
}
注意事项
-
uni-card
默认行为:- 默认
overflow: hidden
,会裁剪超出部分。 - 如果你希望内容可以超出卡片(如实现特殊布局),需要手动设置
overflow: visible
。
- 默认
-
可能影响
uni-card
的阴影和圆角:- 如果子元素溢出,可能会破坏
uni-card
的边框圆角 (border-radius
) 或阴影 (box-shadow
) 效果。
- 如果子元素溢出,可能会破坏
-
小程序/ H5 兼容性:
- 在部分平台(如微信小程序),
overflow: visible
可能受限,建议测试目标平台是否支持。
- 在部分平台(如微信小程序),
总结
✅ 允许溢出 :设置 <uni-card style="overflow: visible;">
❌ 默认行为 :<uni-card>
会裁剪溢出内容(overflow: hidden
)
如果你需要子元素完全不受 uni-card
限制,也可以考虑去掉 uni-card
,改用普通 view
+ 自定义样式。