走马灯效果的swiper上了slidesPerView: ‘auto‘就不动了?autoplay失效?

需求:

这边要的是一个走马灯的效果,简单的实现是用一张图片轮播本身,然后就上了swiper

代码:

//HTML
<div
	v-swiper:bannerSwiper="swiperOption"
	ref="mySwiper"
>
	<div
		ref="swiperWrapper"
		class=" swiper-wrapper"
	>
		<div
			class="swiper-slide"
		>
			<img :src="multiImg" />
		</div>
		<div
			class="swiper-slide"
		>
			<img :src="multiImg" />
		</div>
	</div>
</div>
swiperOption: {
	// 滑动距离不是一个item
	freeMode: true,
	// 滑动速度
	speed: 48000,
	// 禁止手拖滑动
	allowTouchMove: false,
	// 自动播放
	autoplay: {
		delay: 0,
		reverseDirection: true,
		disableOnInteraction: false
	},
	slidesPerView: 'auto',
	loopedSlides: 3,
	loop: true
}

情况:

框架:nuxt

复现:从其他页面进入该页面,走马灯不走了。但是页面本身直接刷新,大概率可以用。当页面可以用之后,切换页面回来也是可以的

分析:

autoplay的几个钩子事件表明他都运行了。但是为何无效?

经过不断的尝试发现:纯img的slide用了slidesPerView:auto后出现该问题,改成非auto都行,但是我们就要这个随图片大小变化去自适应的效果。

解决手段

所以猜测是非页面刷新时,图片还没加载完就挂载了,然后swiper算不到宽度就无法播放。最后解决手段是在图片加载后去展示swiper

如mounted

mounted() {
	if (process.client) {
		const img = new Image()
		img.src = this.multiImg
		img.onload = () => {
			this.showSwiper = true
		}
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这段代码是使用 Swiper5 初始化一个垂直方向的轮播图,其中包含了许多配置项,下面我来一一解析: ```javascript var mySwiper1 = new Swiper(".m-mzw-swiper-a4 .swiper1", { direction: "vertical", // 设置为垂直方向 loop: true, // 无限循环 slidesPerView: "auto", // 自动根据容器宽度计算每页显示的图片数量 centeredSlides: true, // 居中显示轮播图 freeMode: true, // 自由模式,允许滑动到任意位置 watchSlidesVisibility: true, // 开启此选项后,仅在当前slide对应的swiper-slide-visible元素上添加active类名 // mousewheel: true // 是否开启鼠标滚轮控制 }); ``` - `direction: "vertical"`:设置轮播图方向为垂直方向,即上下滚动。 - `loop: true`:开启轮播图无限循环,即从最后一张图片切换到第一张图片时,会自动继续切换到第二张图片。 - `slidesPerView: "auto"`:自动根据容器宽度计算每页显示的图片数量,即每个页面容纳的图片数量不固定。 - `centeredSlides: true`:居中显示轮播图,即当前显示的图片在居中位置。 - `freeMode: true`:自由模式,允许滑动到任意位置,而不是每次只能滑动到下一个或上一个图片。 - `watchSlidesVisibility: true`:开启此选项后,仅在当前 slide 对应的 `.swiper-slide-visible` 元素上添加 `active` 类名,可以用于控制样式。 - `mousewheel: true`:是否开启鼠标滚轮控制,这个选项被注释掉了,如果需要开启,可以取消注释。 除了这些常用的配置项之外,Swiper5 还有许多其他的配置项,可以根据实际需求进行配置。希望这些信息对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值