uniapp视频和图片混合轮播

由于公司领导需要做视频和图片同时轮播的效果,本来以为很简单就能实现,没想到有大坑,在app端video的层级太高,查看插件市场并没有此类组件,于是自己手撸一个,也方便大家一起使用。        

关于uniapp中video在app端层级过高的问题,导致在轮播的时候出现错位、卡顿、无法滑动等问题,可以使用视频、图片混合轮播 - DCloud 插件市场,该组件完美解决此类问题,兼容app、微信小程序、h5,使用vue2编写,如果使用vue3需要自己修改部分代码

        使用方法:

1、导入组件

2、找到此文件。没有的话重新导入

3、使用案例,在使用的地方导入即可

<template>
	<view class="swiper_view">
		<MySwiper :list="bannerList"></MySwiper>
	</view>
</template>

<script>
	import MySwiper from '@/components/fuyu-MixSwiper/fuyu-MixSwiper/.vue'
	export default {
		components: {
			MySwiper
		},
		data() {
			return {
				bannerList:[
					{
						id: 1,
						url: 'https://www.w3schools.com/html/picture_example.jpg'
					},
					{
						id: 2,
						url: 'https://www.w3schools.com/html/mov_bbb.mp4'
					},
					{
						id: 3,
						url: 'https://www.w3schools.com/html/mov_bbb.mp4'
					},
					{
						id: 4,
						url: 'https://www.w3schools.com/html/picture_example.jpg'
					},
					{
						id: 5,
						url: 'https://www.w3schools.com/html/mov_bbb.mp4'
					},
					{
						id: 6,
						url: 'https://www.w3schools.com/html/picture_example.jpg'
					},
				]
			}
		},
		methods: {
		}
	}
</script>
<style scoped>
	.swiper_view {
		height: 300rpx;
		background-color: aliceblue;
		border-radius: 20rpx;
		overflow: hidden;
		margin: 20rpx;
		background-color: black;
	}
</style>
### 创建支持视频图片轮播图组件 为了在 UniApp 中创建一个既支持图片又支持视频轮播图组件,可以基于 `uni-swiper` 组件进行扩展。这不仅能够提供良好的用户体验,还能增强应用的功能多样性。 #### 1. 使用 uni-swiper 实现基础轮播功能 首先,在页面中引入并配置基本的 `swiper` 属性来设置指示点、自动播放等功能: ```html <template> <view class="carousel-container"> <!-- 轮播--> <swiper :indicator-dots="true" :autoplay="true" :interval="3000" :duration="500" circular > <swiper-item v-for="(item, index) in mediaItems" :key="index"> <block v-if="item.type === 'image'"> <navigator class="media-item" :url="item.link || ''"> <image mode="aspectFill" :src="item.src"></image> </navigator> </block> <block v-else-if="item.type === 'video'"> <video autoplay loop muted object-fit="cover" :src="item.src"></video> </block> </swiper-item> </swiper> </view> </template> <script> export default { data() { return { mediaItems: [ { type: "image", src: "/static/images/example.jpg", link: "" }, { type: "video", src: "/static/videos/sample.mp4" } ] }; } }; </script> <style scoped> .carousel-container .media-item image, .carousel-container video { width: 100%; height: 100%; } </style> ``` 上述代码展示了如何根据不同类型的媒体项(图像或视频),动态渲染相应的 HTML 结构[^2]。 #### 2. 自定义样式与交互逻辑 对于更复杂的场景,比如需要处理不同分辨率下的显示适配或是增加额外的操作按钮(如暂停/播放控制),可以通过 CSS JavaScript 来进一步定制化该组件的行为。例如,当检测到当前设备屏幕宽度小于某个阈值时调整轮播项目的尺寸;或者为每个项目添加点击事件监听器以便执行特定操作。 #### 3. 封装成可重用组件 如果计划在整个项目里多次使用这个特性,则建议将其封装成为一个独立的 Vue 单文件组件 (SFC),这样不仅可以简化其他地方对该特性的调用方式,也方便后期维护更新。 ```javascript // components/MediaSwiper.vue <template> ... </template> <script> ... </script> <style lang="scss" scoped> ... </style> ``` 之后就可以像下面这样简单地导入并使用它了: ```vue <!-- pages/home/index.vue --> <template> <view> <MediaSwiper /> </view> </template> <script> import MediaSwiper from '@/components/MediaSwiper' export default { components: { MediaSwiper } } </script> ``` 通过这种方式构建出来的轮播图不仅能很好地适应多种内容形式的需求,同时也具备较高的灵活性易用性[^3]。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值