2022/04/24 微信小程序自定义封面效果

目标效果
自定义播放按钮放在视频中间控制视频播放

遇到问题
1.我的播放图片按钮是透明的,挡不住下面视频自带的播放按钮
在这里插入图片描述
2.隐藏中间按钮可以解决视频自带的中间播放按钮不显示,但是poster的封面效果就不起作用了
在这里插入图片描述
解决方法
思路:用cover-view做整个的覆盖层当成封面图,再用个cover-img做定位按钮
还要结合微信程序video的API,中间播放按钮这些需要隐藏
最后的实现效果
在这里插入图片描述
demo代码
html

 <view class="video-box">
            <video id="video" style="height:100%;width:100%;" src="https://summit-img.geekpark.net/frontier-weapp/前沿社会员采访2020.mp4" object-fit="fill" show-mute-btn="true" title="前沿社会员采访" bindpause="pauseVideo" bindended="endedVideo">
              <cover-view class="video_cover" bindtap="playVideo" wx:if="{{!videoStarted}}">
                <cover-image src="{{videoPosterImg}}" mode="widthFix">
                </cover-image>
                <cover-image src="{{videoPlayIcon}}" mode="widthFix" class="video_play_icon"></cover-image>
              </cover-view>
            </video>
          </view>

js

data: {
    videoStarted: false, //手动点击 视频未播放
   
    videoPosterImg: "//封面图片",
    videoPlayIcon: ""播放按钮图片
  },
  
//播放视频
  playVideo: function () {
    var videoContext = wx.createVideoContext('video')
    videoContext.play()
    this.setData({
      videoStarted: true
    })
    // console.log('palyplay')
  },

  //暂停视频
  pauseVideo: function () {
    this.setData({
      videoStarted: false
    })
    // console.log('pause')
  },

  //视频结束
  endedVideo: function () {
    // console.log('bindended')
    this.setData({
      videoStarted: false
    })
    // this.videoContext.ended();
  },

  //页面滚动(这里是wxml中使用了scroll-view组件,当页面滚动视频也会关闭)
  handleScroll: function () {
    var videoContext = wx.createVideoContext('video')
    videoContext.pause()
  },
//=======其实video组件应该在这里声明,下面用this.videoContext来调用,但我会报错
// onReady() {
  //   this.videoContext = wx.createVideoContext('video')
  // },

wxss

 .video-box {
  width: 95vw;
  height: 54vw;
  /* outline: 1px solid red; */
}

/* 视频封面 */
.video-box .video_cover {
  width: 100%;
  height: 100%;
  position: relative;
}

/* 视频播放按钮 */
 .video-box .video_cover .video_play_icon {
  /* outline: 1px solid red; */
  position: absolute;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
  width: 60px;
  height: 60px;
  z-index: 5
}

参考链接
1.这个demo就是没有封面图效果,但是作者有小程序代码片段看效果
https://blog.csdn.net/z291493823/article/details/122049886

2.我主要是照这个改的,重点是使用cover-view
https://blog.csdn.net/qq_43447509/article/details/107822675?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1.pc_relevant_antiscanv2&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1.pc_relevant_antiscanv2&utm_relevant_index=1

tips
定位的时候要看清楚父子元素,我定位反正关系没搞清,结果视频在小程序上划不动了

### 微信小程序实现自定义转发封面的方法 在微信小程序中,为了实现自定义转发封面的功能,主要依赖于`onShareAppMessage`方法。当用户触发页面内的转发按钮时,可以通过配置该函数返回的对象来自定义分享的内容,包括标题、路径、描述以及最重要的图片路径。 对于具体实施: - 当检测到事件源为页面内部的转发按钮(`if (options.from === 'button')`)时,创建并填充一个对象`shareObj`用于设置分享参数。 这些参数可以指定分享出去的消息样式,比如设定分享卡片显示的文字说明(title),跳转链接(path),附加文字(desc)还有最关键的一点——预览图(imageUrl)[^3]。 ```javascript // 示例代码展示如何通过编程方式定制化分享行为 Page({ onShareAppMessage: function(options){ const shareData = { title: "欢迎体验我们的服务", path: "/pages/home/home?from=shared", // 假设这是目标页面URL desc: "这里有您想要的信息哦~", imageUrl: '../../assets/images/share-cover.jpg' // 自定义封面图像资源位置 }; return shareData; } }) ``` 值得注意的是,在实际开发过程中可能还需要考虑不同场景下的兼容性和用户体验优化等问题。例如确保所使用的图片尺寸适合作为缩略图,并且加载速度快;同时也要注意文案的设计以提高转化率等细节方面的工作[^1]。 另外,如果希望支持更广泛的社交平台如朋友圈,则除了上述提到的基础配置外,还需额外处理针对特定环境的支持逻辑,即实现`onShareTimeline()`接口来满足特殊需求[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值