video、canvas、camera等原生组件层级最高,其他组件无论z-index为多少,都无法覆盖在原生组件上。
这里拿video组件做示例,如果需要点击视频支持微信开放能力,例如授权手机号,获取用户信息等,必须要利用button组件,如果在原生组件外层添加button组件,点击视频并不会触发button事件,代码如下,这里点击视频并不会弹出授权手机提示,触发getPhoneInfo函数。
<button open-type='getPhoneNumber' bindgetphonenumber='getPhoneInfo'>
<video src="{{videoUrl}}"></video>
</button>
解决办法:利用 cover-view 组件,原生组件只支持嵌套cover-view和cover-image组件,且cover-view内可以使用button。
代码如下,同时用css隐藏button,并全覆盖video即可实现点击视频弹出授权手机提示,此时点击控制栏无效。这里视频是自动播放不可控,如果需要控制视频或者是自定义播放按钮图标等,可以在button内嵌套cover-image自定义即可。
<video src="{{videoUrl}}" autoplay controls="{{false}}">
<cover-view>
<button open-type='getPhoneNumber' bindgetphonenumber='getPhoneInfo'>
<cover-image src="{{imgUrl}}" />
</button>
</cover-view>
</video>
tips:video的层级问题在开发者工具中不会显露出来,z-index会起作用,一定要在真机上测试。 |