uni-app实现图片和视频的轮播
uni-app实现图片和视频的轮播
说实话,这玩意儿是真的恶心呀,前期看到uView实现了嵌套的轮播,结果自己试的时候发现只有在H5上面生效,视频可以显示并且播放,在app端完全是黑屏的状态,视频什么都看不到,轮播倒是实现了。网上搜索了很多资料,发现很多大佬都说在swiper中不能放置视频和图片嵌套,会和轮播的scroll属性冲突,产生一些无法理解的错误。
搜搜搜,作为初级CV工程师,就是要不断尝试,不断CV,搜索大量资料。最后找到了一种勉强合适的方式:轮播的时候使用视频的图片去轮播,多做一个判断,一旦发现是视频文件,就给他轮播视频的某个代表图片。利用点击事件点击图片进行视频播放。
<swiper class="screen-swiper" :hidden="!autoplay">
<swiper-item>
<video style="height: 95vh" id="myVideo" :src="videoUrl" autoplay="false" loop muted
show-play-btn controls objectFit="cover" @ended="close"></video>
<u-button text="返回" @click="close()"></u-button>
</swiper-item>
</swiper><swiper :hidden="autoplay" class="screen-swiper" indicator-dots="true" circular="true"
:autoplay="!autoplay" interval="3500" duration="500">
<swiper-item @tap="item.type == 'video' && BoFang(item.path) " v-for="item in ress">
<image v-if="item.type == 'image'" :src="item.path" mode="widthFix"></image>
<image v-else src="../../static/images/video1.jpg" mode="heightFix "></image>
</swiper-item>
</swiper>
方法:
// 播放视频
BoFang(val) {
this.videoUrl = val
if (this.autoplay == false) {
this.autoplay = true;
// this.videoContext.play();
}
},
// 关闭视频
close() {
if (this.autoplay == true) {
this.autoplay = false
}
}
样式代码:
.screen-swiper {
min-height: 360upx;
}
.screen-swiper image,
.screen-swiper video {
width: 100%;
display: block;
height: 100%;
margin: 0;
pointer-events: none;
}
部分代码如上,接口数据获取到了就行。
更多推荐
所有评论(0)