uniapp+uview多个组件嵌套只显示一个遮罩层的问题
·
我们在日常需求中肯定会遇到多层ui组件嵌套却只显示一层遮罩层的情况,如下图,它实际上是有两个组件u-popup弹出层上有一个日历组件u-calendar,这个时候我们正常应该显示两层遮罩层,但是会发现只显示了一个,如下图 虽然功能没什么影响 但是看起来不美观

研究了很长时间,我这里提供一种解决方法,在最高层级显示的组件上套上一层遮罩层,设置z-index代码如下, 注意:zIndex需要设置大一些,我这里设置的是10000。
<u-overlay :show="showDatePicker" @click="showTimePicker = false" :zIndex="100000">
<u-calendar :show="showDatePicker" :mode="'range'" :minDate="minDate" :maxDate="maxDate"
:defaultDate="defaultDateRange" :startText="startText" :endText="endText" :confirmText="confirmText"
:showMark="false" :monthNum="monthNum" :color="primaryColor" @confirm="onDateConfirm" @close="closeDatePicker"
@change="onCalendarChange" :defaultSelect="defaultDateRange">
<view slot="day" slot-scope="{date, info, week, day, selected, disabled}" class="custom-day">
<view class="custom-day-inner" :class="{
'selected': selected,
'range-left': info.rangeStatus === 'start',
'range-right': info.rangeStatus === 'end',
'range-between': info.rangeStatus === 'middle'
}" v-if="isValidDate(date)">
{{ day }}
<text v-if="selected" class="day-status">{{ info.rangeStatus === 'start' ? startText : endText }}</text>
</view>
</view>
</u-calendar>
</u-overlay>
修改后运行结果如下,完美解决。

更多推荐


所有评论(0)