uniapp实现app端图片+视频轮播

这篇具有很好参考价值的文章主要介绍了uniapp实现app端图片+视频轮播。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

需求:swiper轮播里面,可能有图片也可能有视频。当swiper切换到视频时,视频以动画的样式展示(无按钮、进度条等默认播放控件),自动轮播取消,手动滑动切换取消。当视频播放完毕后,可以自动轮播,可以手动滑动切换。

找了个插件市场里的改的。(感谢大佬的插件!

第一步使用DCloud插件swiper-video-image - DCloud 插件市场

第二步:①video标签里加属性。实现隐藏按钮、进度条等默认播放控件

                        controls = "false"

              原swiperChange方法中添加判断,实现切换到视频时,自动轮播取消,手动滑动切换取消。

                    if (obj[this.typeName] === 'video'){
                       this.touch = true
                        this.autoplay = false
                    }    

                    swiper标签中加属性

                        :disable-touch = "touch"(是否禁止用户 touch 操作)

                        :autoplay="autoplay"(是否自动切换)

              ③使用@ended,用来判断视频当播放到末尾时触发事件,解开自动轮播,手动滑动切换。

                   @ended="videoEnded"

                videoEnded(){
                    this.touch = false
                    this.autoplay = true
                },

部分代码:

<template>
	<view class="content">
		<view class="screen-swiper-box">
			<swiper :current="index" @change="swiperChange" class="screen-swiper" indicator-dots="true" :circular="circular"
				:autoplay="autoplay" :interval="interval" duration="500" :style="[whStyle]" :disable-touch = "touch">
				<swiper-item v-for="(item, i) in list" :key="i" :id="i">
					<video v-if="item[typeName] == videoValue" :id="'myVideo-'+i" class="myVideo" :src="item[linkName]"
						controls = "false" objectFit="cover" enable-progress-gesture="false" show-loading="true"
						play-btn-position="center" show-fullscreen-btn="true" :style="[whStyle]"
						@click="swiperClick(item,i)" @ended="videoEnded"></video>
					<image v-if="item[typeName] == imgvalue" class="swiperImage" :src="item[linkName]" mode="scaleToFill"
						:style="[whStyle]" @click="swiperClick(item,i)">
					</image>
				</swiper-item>
			</swiper>
		</view>
	</view>
</template>
<script>
export default {
	data() {
		return {
			index: 0, // 当前页
			videoCtx: '',
			touch:false,
		}
	},
	methods: {
		videoEnded(){
			this.touch = false
			this.autoplay = true
		},
		swiperChange(e) {
			// 获取上一个
			let obj = this.list[this.index]
			if (obj[this.typeName] == this.videoValue) {
				// console.log('暂停', this.index)
				this.videoCtx = uni.createVideoContext('myVideo-' + this.index, this)
				this.videoCtx.pause()
			}

			// 获取当前
			this.index = e.detail.current // 更新当前index
			obj = this.list[this.index]
			if (obj[this.typeName] == this.videoValue && this.autoPlayVideo) {
				// console.log('播放', this.index)
				this.videoCtx = uni.createVideoContext('myVideo-' + this.index, this)
				this.videoCtx.play()
			}
			this.$emit('swiperChange', this.index)
			if (obj[this.typeName] === 'video'){
				this.touch = true
				this.autoplay = false
			}
		},
	},
}
</script>

                文章来源地址https://www.toymoban.com/news/detail-433649.html

到了这里,关于uniapp实现app端图片+视频轮播的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • uniapp-app的视频轮播图

    直接使用swiper做图片轮播图是没有问题的,视频轮播图的兼容性仅仅体现在APP上。 我的方法是将nvue页面作为视频的遮罩层,如果直接将视频放到nvue页面,说不定也可以。其实这个兼容性的关键在于video标签在手机上的层级过高,除了nvue,还有其他方法解决。 因为我的这个项

    2023年04月11日
    浏览(43)
  • uni-app 轮播图视频+图片 视频图片全屏预览 两种方法

    在做商城项目的时候,商品详情的轮播图需要同时显示视频和图片,并且能够全局预览 如果项目里有uview这个组件库,可以通过swiper轮播图的指定类型进行解决,点击这里进行跳转 也可以通过uni-app自带的swiper去解决这个问题,点击这里进行跳转 就目前的两种方案,第二种方

    2024年02月12日
    浏览(110)
  • uni-app 中 swiper 轮播图高度自适应

    方法一(好像只对第一张起作用) 1、首先 swiper 标签的宽度是 width: 100% 2、swiper 标签存在默认高度是 height: 150px ;高度无法实现由内容撑开,在默认情况下,图片的高度显示总是 150px swiper 宽度 / swiper 高度 = 原图宽度 / 原图高度 swiper 高度 = swiper 宽度 * 原图高度 / 原图宽度 方法

    2024年02月09日
    浏览(55)
  • 使用Swiper实现图片和视频的连续播放

    轮播图,第一张是大屏,大屏播放指定时间后,轮播提供的图片,图片轮播完后轮播视频,其中每个视频都是播放完再轮播到下一个视频的。总结就是:页面 - 图片1 - 图片2 - 图片3…… - 视频1 - 视频2 - 视频3…… - 页面 - 图片1 - 图片…… 这样循环。 整个body下面放swiper,每个

    2024年02月02日
    浏览(36)
  • 小程序中轮播图u-swiper图片无法显示问题

    问题:uview官网中 指定的图片路径字段为image,完全按照uview写轮播图却无法正常显示。    解决方法:1.把image字段改成url字段 2.给u-swiper加上  keyName=\\\"image\\\" 最后找到了总结原因: npm下载的uview默认是2.0的最新版本,百度上的uview文档默认是1.0的文档,title也是一样的问题,所

    2024年02月11日
    浏览(55)
  • uniapp - 完美解决 <swiper> 嵌套 video 视频时卡顿不流畅问题,swiper滑块视图容器里面包含视频播放器和图片共存时滑动切换特别卡,滑动不流畅问题的解决方案(保证解决此问题)

    在uniapp项目开发中,swiper组件内有多个视频、图片和视频混合时会出现滑动不流畅卡顿问题,并且视频自动轮播时没等看完视频就轮播走了。 解决方案全端(H5网页/小程序/app安卓苹果等)兼容适用,uview组件库同理也能用,保证解决卡顿不流畅的问题。

    2024年02月05日
    浏览(100)
  • 微信小程序swiper 视频中间大,两边小,轮播滑到中间视频自动播放组件教程

    静态效果:  进入下面小程序可以体验效果 ,点击底部 看剧 栏目   

    2024年02月20日
    浏览(60)
  • 使用vant+video.js实现轮播图图片和视频轮播播放

    先上效果图 1. 安装 2. 在需要用到的页面引入 3. 具体页面使用 假设传给子组件的数组结构 按照步骤来使用,其他地方视频播放情况都还好,至少安卓是好的,只是点击播放和暂停时候,ios需要点击多下才能触发点击事件; 然后以为是video.js插件可能没更新,ios版本迭代超过

    2023年04月08日
    浏览(47)
  • 实现swiper 3d 轮播效果

    先上个效果图,代码可以直接拿~ 因为项目用的是nuxt2,所以考虑到swiper的兼容问题,选择的是\\\"swiper\\\": “^5.2.0” 首先是安装swiper和vue-awesome-swiper,并指定版本 然后引入,在nuxt.config.js中引入 在plugins下新建一个vue-swiper.js 在components下新建一个VueSwiper.vue 在plugins下引入 然后是使

    2024年04月17日
    浏览(42)
  • 解决微信小程序swiper轮播图撑不满有留白 实现swiper轮播图撑满父容器

    问题 :如下图,swiper轮播图两侧会有留白,没有撑满swiper 失败的尝试 : 1.调整图片尺寸 2.设属性设置image的mode为scaleToFill 3.设置item的属性 都没能实现将图片填充满轮播图,图片会有右侧和底部两块留白 通过调试器查看到image区域很小,怀疑是image本身属性的问题 随后尝试在

    2024年04月25日
    浏览(59)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包