cover-view

1.4.0 新版功能: 低版本需做 兼容处理

覆盖在原生组件之上的文本视图。

可覆盖的原生组件包括 mapvideo ☁️canvascameralive-playerlive-pusher

只支持嵌套 cover-viewcover-image,可在 cover-view 中使用 button。 组件属性的长度单位默认为px,2.4.0起支持传入单位(rpx/px)。

属性

类型

默认值

必填

说明

最低版本

scroll-top

number/string

设置顶部滚动偏移量,仅在设置了 overflow-y: scroll 成为滚动元素后生效

2.1.0

小技巧

<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等。

小技巧

建议子节点不要溢出父节点

小技巧

默认设置的样式有:white-space: nowrap; line-height: 1.2; display: block;

警告

bug 自定义组件嵌套 cover-view 时,自定义组件的 slot 及其父节点暂不支持通过 wx:if 控制显隐, 否则会导致 cover-view 不显示

示例代码

在开发者工具中预览效果

<video
  id="myVideo"
  src="http://wxsnsdy.tc.qq.com/105/20210/snsdyvideodownload?filekey=30280201010421301f0201690402534804102ca905ce620b1241b726bc41dcff44e00204012882540400&bizid=1023&hy=SH&fileparam=302c020101042530230204136ffd93020457e3c4ff02024ef202031e8d7f02030f42400204045a320a0201000400"
  controls="{{false}}"
  event-model="bubble"
>
  <cover-view class="controls">
    <cover-view class="play" bindtap="play">
      <cover-image class="img" src="/path/to/icon_play" />
    </cover-view>
    <cover-view class="pause" bindtap="pause">
      <cover-image class="img" src="/path/to/icon_pause" />
    </cover-view>
    <cover-view class="time">00:00</cover-view>
  </cover-view>
</video>
.controls {
  position: relative;
  top: 50%;
  height: 50px;
  margin-top: -25px;
  display: flex;
}
.play,
.pause,
.time {
  flex: 1;
  height: 100%;
}
.time {
  text-align: center;
  background-color: rgba(0, 0, 0, 0.5);
  color: white;
  line-height: 50px;
}
.img {
  width: 40px;
  height: 40px;
  margin: 5px auto;
}
Page({
  onReady() {
    this.videoCtx = wx.createVideoContext('myVideo')
  },
  play() {
    this.videoCtx.play()
  },
  pause() {
    this.videoCtx.pause()
  }
})