微信小程序仿抖音短视频切换效果的实例代码
玩烂小程序 人气:1本文着重讲解了微信小程序仿抖音短视频切换效果,文中会用代码示例为大家做详细介绍,希望能够帮助到您,欢迎大家阅读和收藏
一直以为抖音短视频切换假如用小程序做的话应该是比较简单的,直接用swiper实现就好,但在实际写的过程中才发现没那么简单,要控制的逻辑还是挺多的。
还是先看效果
体验路径
自定义组件系列》》仿抖音短视频切换
代码逻辑
直接调用自定义的swiper组件就好
调用代码
js
const videoList = [] Page({ data: { videoList, activeId:2, isPlaying:true }, onLoad() { var that = this wx.getSystemInfo({ success: function(res) { that.setData({ systemInfo:res, menuButtonBoundingClientRect: wx.getMenuButtonBoundingClientRect(), }) console.log(res) }, }) this.setData({ videoList: [{ id: 1, title: "黄渤", desc: "中国女排发布会,黄渤与巩俐中国女排发布会,黄渤与巩俐", url: "https://6e6f-normal-env-ta6pc-1300924598.tcb.qcloud.la/video-swiper/1589851354869410.mp4?sign=1f636557effa496e074332e3f4b9b8aa&t=1589851461" }, { id: 2, title: "莱万多夫斯基", desc: "莱万多夫斯基逆天五子登科", url: "https://6e6f-normal-env-ta6pc-1300924598.tcb.qcloud.la/video-swiper/1589851322674828.mp4?sign=185e46cba885c4303c7cf5f8658bea9b&t=1589851482" }, { id: 3, title: "驾考那些事", desc: "半坡起步是多难", url: "https://6e6f-normal-env-ta6pc-1300924598.tcb.qcloud.la/video-swiper/1589851312271309.mp4?sign=978660c42305ec67d4c3d603c2ae5a3d&t=1589851496" }, { id: 4, title: "小美女", desc: "蹦蹦跳跳", url: "https://6e6f-normal-env-ta6pc-1300924598.tcb.qcloud.la/video-swiper/1589851307588534.mp4?sign=43cf344e83089348eeeea38d26ba51bb&t=1589851514" }, { id: 5, title: "黄渤", desc: "中国女排发布会,黄渤与巩俐中国女排发布会,黄渤与巩俐", url: "https://6e6f-normal-env-ta6pc-1300924598.tcb.qcloud.la/video-swiper/1589851354869410.mp4?sign=1f636557effa496e074332e3f4b9b8aa&t=1589851461" }, { id: 6, title: "莱万多夫斯基", desc: "莱万多夫斯基逆天五子登科", url: "https://6e6f-normal-env-ta6pc-1300924598.tcb.qcloud.la/video-swiper/1589851322674828.mp4?sign=185e46cba885c4303c7cf5f8658bea9b&t=1589851482" }, { id: 7, title: "驾考那些事", desc: "半坡起步是多难", url: "https://6e6f-normal-env-ta6pc-1300924598.tcb.qcloud.la/video-swiper/1589851312271309.mp4?sign=978660c42305ec67d4c3d603c2ae5a3d&t=1589851496" }, { id: 8, title: "小美女", desc: "蹦蹦跳跳", url: "https://6e6f-normal-env-ta6pc-1300924598.tcb.qcloud.la/video-swiper/1589851307588534.mp4?sign=43cf344e83089348eeeea38d26ba51bb&t=1589851514" }, { id: 9, title: "黄渤", desc: "中国女排发布会,黄渤与巩俐中国女排发布会,黄渤与巩俐", url: "https://6e6f-normal-env-ta6pc-1300924598.tcb.qcloud.la/video-swiper/1589851354869410.mp4?sign=1f636557effa496e074332e3f4b9b8aa&t=1589851461" }, { id: 10, title: "莱万多夫斯基", desc: "莱万多夫斯基逆天五子登科", url: "https://6e6f-normal-env-ta6pc-1300924598.tcb.qcloud.la/video-swiper/1589851322674828.mp4?sign=185e46cba885c4303c7cf5f8658bea9b&t=1589851482" }, { id: 11, title: "驾考那些事", desc: "半坡起步是多难", url: "https://6e6f-normal-env-ta6pc-1300924598.tcb.qcloud.la/video-swiper/1589851312271309.mp4?sign=978660c42305ec67d4c3d603c2ae5a3d&t=1589851496" }, { id: 12, title: "小美女", desc: "蹦蹦跳跳", url: "https://6e6f-normal-env-ta6pc-1300924598.tcb.qcloud.la/video-swiper/1589851307588534.mp4?sign=43cf344e83089348eeeea38d26ba51bb&t=1589851514" }] }) }, onPlay(e) { // console.log("开始播放",e) }, onShowPause(e){ this.setData({ isPlaying: false }) }, onHidePause(e){ this.setData({ isPlaying: true }) }, onPause(e) { }, onEnded(e) { // console.log(e) }, onError(e) { }, onWaiting(e) { }, onTimeUpdate(e) { }, onProgress(e) { }, onChange(e) { console.log(e) console.log("id",e.detail.activeId) this.setData({ activeId:e.detail.activeId }) }, onLoadedMetaData(e) { console.log('LoadedMetaData', e) }, go2Home() { wx.navigateBack({ delta: 1, }) }, })
wxml
<mp-video-swiper class="video-swiper" video-list="{{videoList}}" bindplay="onPlay" bindpause="onPause" bindtimeupdate="onTimeUpdate" bindended="onEnded" binderror="onError" bindwaiting="onWaiting" bindprogress="onProgress" bindloadedmetadata="onLoadedMetaData" bindchange="onChange" bindshowPause="onShowPause" bindhidePause="onHidePause"></mp-video-swiper> <image wx:if="{{!isPlaying}}" class="imagePlayer" style="left:{{systemInfo.screenWidth/2-40/2}}px;top:{{systemInfo.screenHeight/2-40/2}}px" src="./player.png"> </image> <view class="viewFloat"> <view class="videoTitle">{{videoList[activeId-1].title}}</view> <view class="videoDes">{{videoList[activeId-1].desc}}</view> </view> <view class="viewTabContainer"> <view class="viewTab">首页</view> <view class="viewTab">动态</view> <view class="viewTab">商品</view> <view class="viewTab">我的</view> </view>
wxss
@import '../common.wxss'; page{ background-color: black; height: 100%; } mp-video-swiper { width: 100%; height: 100%; } .imagePlayer{ width: 40px; height: 40px; position: fixed; z-index: 1000; opacity: 0.6 } .viewFloat{ position: fixed; display: flex; z-index: 100; width: 500rpx; bottom: 60px; color: white; margin:20rpx; flex-direction: column } .videoTitle{ font-size: 18px; font-weight: 500; } .videoDes{ font-size: 14px; } .viewTabContainer{ position: fixed; display: flex; justify-content: space-around; align-items: center; flex-direction: row; width: 100%; height: 50px; border-top: 0.5px solid white; bottom: 0; } .viewTab{ color: white; }
总结
加载全部内容