Uniapp自定义video播放按钮并结合swiper图片
淘宝中商品详情页都是视频和图片结合,我们这个demo实现的效果如下
话不多说,直接上代码了
先说html布局
<swiper :indicator-dots="dots" :interval="3000" :duration="1000" :circular="true" indicator-color="rgba(216, 216, 216)"
indicator-active-color="#7a7a7a" @change="bannerfun"><block v-for="(iteming,index) in imagetext[0].media" :key="index"><swiper-item class="swiper-video" v-if="iteming.video != '' "><view class="video-btn"><video id="myVideo" ref="myVideo" :src="iteming.video" controls :show-center-play-btn="false" :controls="contimg"object-fit="cover" @play="playFun()" @pause="pauseFun()" @ended="endedFun()"></video><view class="video-img" @tap="videoPlay()" v-show="startVideo"><image src="../../static/details/bofang.svg" mode=""></image></view></view></swiper-item><block v-for="(item,indexing) in iteming.imgArray" :key="indexing"><swiper-item><image :src="item" mode="aspectFill" class="imageurl"></image></swiper-item></block></block>
</swiper>
解析:
1. 第一个swiper-item是包裹我们的视频的,第二个swiper-item是包裹我们的图片
2. swiper中change事件是,current 改变时会触发 change 事件,也就是当我们滑动的时候触发
3. video中的:controls="contimg"是否显示默认播放控件(播放/暂停按钮、播放进度、时间)
4. @play是当开始/继续播放时触发play事件
5. @pause当暂停播放时触发 pause 事件
6. @ended当播放到末尾时触发 ended 事件
这是我的数据结构,所以布局才这样写,你可以根据你的数据结构自行发挥
data中
data() {return {// 是否显示指示点dots: false,//video对象videoplay: {},//中间播放按钮startVideo: true,//是否显示下方的播放,暂停等contimg: false,// 请求的商品图片imagetext: [],// 是否有视频truevideo:'',}},
methods里面
网络请求,我这个网络请求使用class封装的
async detRequest(id) {let introduce = new this.Request(this.Urls.m().introduceurl + '?id=' + id).modeget()try {let res = await Promise.all([introduce])console.log(res)//图片视频的数据this.imagetext = res[0].datalet mendata = res[0].data[0]//如果有视频,就不显示面板指示点this.truevideo = mendata.media[0].videothis.dots = this.truevideo == '' ? true : false} catch (e) {console.log(e)}
},
然后是当我们滑动时候触发
//滑块滑动时触发bannerfun(e) {// 出现指示点let inx = e.detail.current// 没有视频要显示指示点if (this.truevideo != '') {this.dots = inx == 0 ? false : true,// 滑动时暂停视频播放this.videoplay.pause()} else {this.dots = true}},
视频播放时触发
playFun() {this.startVideo = falsethis.contimg = true},
视频暂停时触发
pauseFun() {this.startVideo = truethis.contimg = false
},
播放到末尾触发
endedFun() {this.startVideo = truethis.contimg = false
},
手动触发视频播放
videoPlay() {setTimeout(() => {this.videoplay.play()}, 200)
},
获取video对象
mounted() {this.videoplay = wx.createVideoContext('myVideo')
}
//获取商品数据
onLoad() {this.detRequest(传id)
}
github上有详细的教程
github项目地址:https://github.com/lsh555/TmUniapp
Uniapp自定义video播放按钮并结合swiper图片相关推荐
- H5 实现自定义video播放器,快来点我吧
效果 要实现自定义video播放器需要熟悉video的相关操作 视频播放它有哪些操作 1. 播放 play() 2. 暂停 pause() 3. 判断当 ...
- JS 用CANVAS自定义VIDEO播放器
JS 用CANVAS自定义VIDEO播放器 概述 CANVAS绘制核心代码 播放器代码 使用页面HTML代码 使用页面JS代码 使用示例 概述 HTML5用规范的VIDEO标签取代了以往需要借助外部控 ...
- jquery设置video的宽度_jQ效果:jQuery和css自定义video播放控件
下面介绍一下通过jquery和css自定义video播放控件. Html5 Video是现在html5最流行的功能之一,得到了大多数最新版本的浏览器支持.包括IE9,也是如此.不同的浏览器提供了不同的 ...
- html5+video手机样式修改,如何自定义video播放器样式?
本篇文章给大家分享了关于如何自定义video播放器样式,内容很详细,希望可以帮助到大家. DIY 本文基于HTML5 Video API,自定义Web视频播放器样式. 其实吧,原生的video 标签样 ...
- 微信小程序 - 实现 <video> 视频组件自定义封面及播放按钮,给 video 视频播放组件加上封面图、封面标题、封面描述文字、自定义的播放按钮、DIY 封面等(详细示例源码)
前言 网上的教程都太乱了,根本无法进行改造,本文做优质的教程. 本文 实现了微信小程序项目中,给 <video> 视频播放组件增加自定义封面.播放按钮.描述等一切 DIY! 您直接一键复制 ...
- html5 video播放按钮放在中间,在html5视频控制区跟踪点击播放按钮(Track clicks to play button in html5 video control area)...
在html5视频控制区跟踪点击播放按钮(Track clicks to play button in html5 video control area) 我点击了一张HTML5视频播放海报,并点击了控 ...
- html自定义video播放器
本章的css可以说约等于没有,全是逻辑,仅供参考 html <!DOCTYPE html> <html lang="en"> <head>< ...
- H5自定义video播放控件,播放暂停使用图标
大家都知道vedio的contorls属性可以将video的控件显示出来,包括播放.暂停.进度条.声量控制.全屏显示等.但是出于需求,往往需要将某些控件外形变成我们想要图标(但功能一样),而不是全部使 ...
- 自定义video播放器的常用的事件。
window.onresize 这个事件主要用于当浏览器窗口发生改变时,实时获取video的width和height: 代码示例: window.onresize=function() {// 控制窗 ...
最新文章
- Python 匹配字符串开头内容与结尾内容(startswith与endswith)
- controller requestparam不传参数空指针异常_看完这篇文章,让你轻松学会Java异常处理...
- 写程序时,经常要重载OnPaint,定位很麻烦,现在有个简单办法
- 【渝粤题库】陕西师范大学180113 学前儿童艺术教育作业
- 如何搭建lamp(CentOS7+Apache+MySQL+PHP)环境 [转]
- linux和android学习,android学习笔记
- python︱批量操作文件(os)、图片操作技巧(下载网络图片、skimage.io)
- [渝粤教育] 中国地质大学 思想道德修养与法律基础 复习题
- 如何在小程序wxml文件中编写js代码
- echarts x轴 y轴设置
- linux系统开发安卓应用,在 Linux 里搭建 Android App 开发环境
- 一文道尽 Excel 的 Criterion
- 链行动之精选案例——区块链解决四大痛点 福费廷结合案例逐步落地
- SQL数据更新、视图
- 【CSS】线性渐变属性值及范例详解
- Paypal账户注册教程!
- Github上bitcoin的CPU挖矿程序部署编译
- FinTechthon赛果公布| 这些区块链脑洞如何实现?
- CNI系列(三)插件实现
- 长三角城市数字经济发展概况
热门文章
- Java基于JSP的家教预约平台
- Hi3516AV200 专业型HD IP Camera SoC简介
- 倍加福倾角传感器INX360D-F99-I2E2-V15
- python to datetime_python-pd.to_datetime或解析日期时间不适用于我...
- 大数据时代与多云时代:一个消亡,一个诞生
- 需求分析文档——适用范围:产品规划经理进行需求分析
- idea部署web项目
- 系统多个版本excel的切换
- 小米pro安装ubuntu18.10 18.04后进入桌面卡住不动
- 历数微软迈向成功的重大历史事件