小程序video组件层级太高如何解决
小程序首页用了一个video组件,然后modal组件的悬浮窗就被这个video覆盖了,因为原生组件的层级太高,用z-index是没有办法解决的。
以下是我刚开始写的代码,不管怎么设置z-index,视频总在悬浮层上面。
<view>
<modal title="请选择" cancel-text="取消" confirm-text="确定" hidden="{{mHidden}}" bindcancel="cancel" bindconfirm="confirm">
<text>这里面写悬浮层要展示的内容</text>
</modal>
</view>
<view class="myVideo">
<video id="myVideo" src="{{video_url}}"></video>
</view>
这里使用cover-view是不行的,因为cover-view组件内只能包含cover-view,cover-image,button组件,所以显然,拥有modal和text组件在其内部就不行,如果用了,那么在开发者工具里面是可以显示的,但是手机上就不显示悬浮层了。
所以不能用modal组件来实现,我们就只能用cover-view组件自己来写了,这里通过接口文件返回的mHidden值(true或false)来决定悬浮层的显示和隐藏:
<cover-view class='Toast_bj' hidden='{{mHidden}}'></cover-view>
<cover-view class="myToast" hidden="{{mHidden}}">
<cover-view>这里面写悬浮层要展示的内容</cover-view>
<cover-view class="cancel button" bindtap="cancel">取消</cover-view>
<cover-view class="confirm button" bindtap="confirm">确定</cover-view>
</cover-view>
<view class="myVideo">
<video id="myVideo" src="{{video_url}}"></video>
</view>
注意:class='Toast_bj’这个是悬浮层的蒙版,必须放在悬浮层class="myToast"前面的位置,因为cover-view组件由先后顺序决定层级,越靠后的cover-view组件层级越高,如果把蒙版放在悬浮层后面,那么悬浮层的按钮就失效了,所以要放悬浮层前面。
悬浮层里面的按钮也用cover-view组件来写,用bindtap组件绑定事件。
悬浮层有样式的话可以在wxss里面写,但是要注意cover-view组件只支持基本的定位,布局,文本样式,不支持一些css属性,比如:border,background-image,shadow,overflow,visible等。
如果使用modal的,也可以在modal显示的时候隐藏video,modal隐藏的时候再显示video,这个可以根据项目需求而定。