博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
解决微信小程序视频组件层级过高的问题
阅读量:6939 次
发布时间:2019-06-27

本文共 3142 字,大约阅读时间需要 10 分钟。

本文首发于我的个人博客:

海豚图片

前言

在微信小程序的开发中,总有一些“VIP”组件,他们的层级,高得让人抓狂,总是凌驾于很多其他低层级组件之上。

诸如:video组件、map组件、canvas组件等。现在就让我来讲讲如何巧妙的解决掉这个问题。

问题描述

由于视频组件层级过高并且无法使用z-index进行控制层级,导致许多人都无法在视频组件之上放置一些其他的组件。

为此,一些漂亮的视频设计往往还没开始就宣告了结束。上一张官方文档的相关说明:
video_regulations.jpg

解决方案

解决思路其实也挺简单的。今天就暂且不宣扬愚公移山的精神了,我们今天选择绕过眼前的大山。既然视频层级很高

很高,并且我们不能降低视频层级或者提升其他组件层级已覆盖视频组件。那么我们就选择只在恰当的时候才让视频
组件出现在我们的页面中。那么问题就显得简单起来了。思路大致如下:

  • 在渲染页面的时候,使用假视频来代替视频组件,换言之就是使用视频封面充当一个视频组件。
  • 当用户点击视频封面时,进行两步操作,第一,隐藏视频封面;第二,播放视频。
  • 当存在同一页面多视频的时候,需要进行视频切换的处理。

接下来直接上代码了:

首先是wxml的代码:

我是遮挡层。

接着是js的代码:

//index.jsPage({  data: {    curr_id: '',   //当前打开的视频id    items: [      {        id: 1, src: 'https://wxsnsdy.tc.qq.com/105/20210/snsdyvideodownload?filekey=30280201010421301f0201690402534804102ca905ce620b1241b726bc41dcff44e00204012882540400&bizid=1023&hy=SH&fileparam=302c020101042530230204136ffd93020457e3c4ff02024ef202031e8d7f02030f42400204045a320a0201000400', poster: 'http://ow74m25lk.bkt.clouddn.com/shilan.jpg'      }, {        id: 2, src: 'https://wxsnsdy.tc.qq.com/105/20210/snsdyvideodownload?filekey=30280201010421301f0201690402534804102ca905ce620b1241b726bc41dcff44e00204012882540400&bizid=1023&hy=SH&fileparam=302c020101042530230204136ffd93020457e3c4ff02024ef202031e8d7f02030f42400204045a320a0201000400', poster: 'http://ow74m25lk.bkt.clouddn.com/shilan.jpg'      },      {        id: 3, src: 'https://wxsnsdy.tc.qq.com/105/20210/snsdyvideodownload?filekey=30280201010421301f0201690402534804102ca905ce620b1241b726bc41dcff44e00204012882540400&bizid=1023&hy=SH&fileparam=302c020101042530230204136ffd93020457e3c4ff02024ef202031e8d7f02030f42400204045a320a0201000400', poster: 'http://ow74m25lk.bkt.clouddn.com/shilan.jpg'      },      {        id: 4, src: 'https://wxsnsdy.tc.qq.com/105/20210/snsdyvideodownload?filekey=30280201010421301f0201690402534804102ca905ce620b1241b726bc41dcff44e00204012882540400&bizid=1023&hy=SH&fileparam=302c020101042530230204136ffd93020457e3c4ff02024ef202031e8d7f02030f42400204045a320a0201000400', poster: 'http://ow74m25lk.bkt.clouddn.com/shilan.jpg'      },    ],  },  onReady: function () {  //创建视频上下文对象    this.videoContext = wx.createVideoContext('myVideo')  },  videoPlay(e) {    this.setData({      curr_id: e.currentTarget.dataset.id,    })    this.videoContext.play()  }})

最后是css的代码:

/*index.wxss*/.video{    margin-bottom: 40rpx;    position: relative;}.model-img{    width: 100%;    height: 420rpx;}.model-btn{    position:absolute;    left:0;    top:0;    bottom:0;    right:0;    margin:auto;    width:100rpx;    height:100rpx;    border-radius:50%;    background-color: rgba(0,0,0,.3);}.play-icon{    margin:28rpx 42rpx;    border-top:26rpx solid transparent;    border-left:36rpx solid #fff;    border-bottom:22rpx solid transparent;}.text{  width: 100%;  height: 100rpx;  line-height: 100rpx;  text-align: center;  background-color: red;  color: #fff;  position: fixed;  bottom: 0;}

以上,就是全部代码了,附上运行结果图:

运行结果图

代码下载

,密码为30s3

结语

好看的皮囊千篇一律,有趣的灵魂万里挑一。祝各位都是有趣的程序媛/猿。嗨起来٩(๑❛ᴗ❛๑)۶

转载地址:http://husnl.baihongyu.com/

你可能感兴趣的文章
计算机基础知识
查看>>
论文学习及报告总结
查看>>
Oracle中创建含有Date时间的字段的表
查看>>
《1024伐木累》-炒股赚钱,大保健
查看>>
HTML5秘籍(第2版) 中文pdf扫描版
查看>>
51nod 1179 最大的最大公约数
查看>>
201521460001网络攻防实验
查看>>
使用Apache pdfbox: 从Linux安装字体到log4j设置日志级别
查看>>
结构体
查看>>
iOS9新框架—Watch Connectivity(详情:http://ios.itcast.cn/subject/ios9/index.shtml )
查看>>
1、线性表实现:顺序存储
查看>>
linux下重命名文件的命令
查看>>
flex-手机端主页布局实例---构造页面结构
查看>>
win10下的linux一些问题
查看>>
BZOJ 1131: [POI2008]Sta
查看>>
PHP文件上传实例详解!!!
查看>>
mysql 查寻数据文件存放路径
查看>>
activemq的安装与使用
查看>>
SpringMVC系列(九)自定义视图、重定向、转发
查看>>
PAT 1029 Median
查看>>