-
这个问题困扰了2天时间,只能说太优秀。
-
为了帮助各位和我遇到同样问题的朋友们,我决定吧解决方案写下来,希望对你们有帮助。
-
我的需求是将中间的那张图片宽度为 70vw, 其它图片的宽度是100px.
-
我首先想到的是slidesPerView设置为‘auto’,然后,通过设置样式:
-
.swiper-slide-active{width: 70vw !important;}
-
.swiper-slide{width: 100px !important;}
-
然后设置它的偏移距离, swiper参数: slidesOffsetBefore: number
-
我虽然设置好了offset偏移距离,但由于每个设备分辨率不一样,偏移距离总是会有偏差,看了源码,计算了宽度,然并卵。。。
-
后来,查看官网示例,看到用transform: scale(0.1) 缩放大小。
-
我想了一下,发现这个办法是可行的, 首先, 我的中间大图片的宽度时70vw, 也就是
window.innerWidth * 0.7 宽度
假设每张图片的宽度时slideWidth ; 要将slideWidth 缩放n倍 使它等于 70 vw, 即:
slideWidth * n = window.innerWidth * 0.7
于是n 这个值就得到了. 然后改变css的scale值
同理 缩放小图片的宽度,使他等于100px;即:
slideWidth * m = 100
注: 获取slideWidth 的获取:swiper初始化生成的单个slide的宽度
-
然后计算下这些值,在css动态修改下就ok啦。
-
剩下的就是样式问题了,我就不用再讲了。