一.cover-view简介
覆盖在原生组件上的文本视图。
小程序框架为了优化体验,部分组件如map、video、textarea、canvas通过原生控件实现,原生组件层级高于前端组件,为了能正常覆盖原生组件,设计了cover-view。
支持的事件:click
二.cover-image简介
覆盖在原生组件上的图片视图。
可覆盖的原生组件:video、map
支持的事件:click
不支持的 CSS
- position: fixed
- opacity
- overflow
- padding
- linebreak
- white-space
注意:nvue的cover-view不在上述限制中,它仅支持且全部支持nvue的所有css。
备注:
- App端vue页面 cover-view、cover-image 中不支持嵌套其它组件,包括再次嵌套cover-view,仅可覆盖video、map。App端nvue页面自2.1.5起没有这些限制。
- App端还可以使用plus.nativeObj.view绘制原生内容,参考:uni-app中使用5+界面控件、plus.nativeObj.view规范
- App端还提供了更灵活和强大的subNvue,参考原生子窗体subNvue
- 在 video 组件中使用时,若想在全屏模式下使用cover-view,只有在微信小程序、App端的nvue页面可实现。
- 百度小程序iOS端暂不支持一个页面有多个video时嵌套cover-view。
- 支付宝小程序中 cover-view 不支持嵌套。
三.微信小程序的cover-view注意事项
- cover-view和cover-image的aria-role仅可设置为button,读屏模式下才可以点击,并朗读出“按钮”;为空时可以聚焦,但不可点击
- 基础库 2.2.4 起支持 touch 相关事件,也可使用 hover-class 设置点击态
- 基础库 2.1.0 起支持设置 scale rotate 的 css 样式,包括 transition 动画
- 基础库 1.9.90 起 cover-view 支持 overflow: scroll,但不支持动态更新 overflow
- 基础库 1.9.90 起最外层 cover-view 支持 position: fixed
- 基础库 1.9.0 起支持插在 view 等标签下。在此之前只可嵌套在原生组件map、video、canvas、camera内,避免嵌套在其他组件内。
- 基础库 1.6.0 起支持css transition动画,transition-property只支持transform (translateX, translateY)与opacity。
- 基础库 1.6.0 起支持css opacity。
- 事件模型遵循冒泡模型,但不会冒泡到原生组件。
- 文本建议都套上cover-view标签,避免排版错误。
- 只支持基本的定位、布局、文本样式。不支持设置单边的border、background-image、shadow、overflow: visible等。
- 建议子节点不要溢出父节点
- 支持使用 z-index 控制层级
- 默认设置的样式有:white-space: nowrap; line-height: 1.2; display: block;
- 自定义组件嵌套 cover-view 时,自定义组件的 slot 及其父节点暂不支持通过 wx:if 控制显隐,否则会导致 cover-view 不显示
四.实现案例
<swiper class="swiper" autoplay="true" indicator-dots="true" indicator-color="#fff">
<swiper-item id="item1">
1
<cover-image class="img0" src="/image/xhr.png"></cover-image>
</swiper-item>
<swiper-item id="item2">
<cover-image class="img" src="/image/xhr.png"></cover-image>
</swiper-item>
<swiper-item id="item3">3</swiper-item>
</swiper>
样式:
.img0{
width: 30%;
height: 30%;
}
.img{
width: 100%;
height: 100%;
}
实现效果: