发现问题
- 引入 swiper ,一页显示 5 张小图,设置相关属性后发现首图与左边框有空隙,并且显示出了图 5 的一部分
var mySwiper = new Swiper('.swiper', {
loop: true, // 循环模式选项
slidesPerView: 5, // 一页几个
slidesPerGroup: 5, // 几个一组
spaceBetween: 10, // 空隙
slidesOffsetBefore: 0, // 左边框偏移量
navigation: {
nextEl: '.swiper-button-next',
prevEl: '.swiper-button-prev',
},
})
- swiper 容器的宽度使用了 calc 计算属性,每张图的宽度 * 图片数量 + 空隙宽度 * 空隙数量 ,正常情况下应该是不会出现空隙的


解决问题
// 暂时移除 loop 设置,屏蔽掉循环模式的影响
var mySwiper = new Swiper('.swiper', {
// loop: true, // 循环模式选项
slidesPerView: 5, // 一页几个
slidesPerGroup: 5, // 几个一组
spaceBetween: 10, // 空隙
slidesOffsetBefore: 0, // 左边框偏移量
navigation: {
nextEl: '.swiper-button-next',
prevEl: '.swiper-button-prev',
},
})
- 暂时移除 loop 属性,发现 ul 盒子实际有一个左 padding,就是这个 padding 导致了盒子内容的错位。因此即使调整宽度和 slidesOffsetBefore 也不奏效。

- 将 ul 的 padding-left 设置为 0,再恢复swiper 的 loop 设置,就正常了
完整代码
<body>
<div>
<div class="picBox">
<div class="swiper">
<ul class="swiper-wrapper">
<li class="swiper-slide">
<div class="imgBox"><img src="./img/float1.png" alt=""></div>
<p>图1</p>
</li>
<li class="swiper-slide">
<div class="imgBox"><img src="./img/float2.png" alt=""></div>
<p>图2</p>
</li>
<li class="swiper-slide">
<div class="imgBox"><img src="./img/float3.png" alt=""></div>
<p>图3</p>
</li>
<li class="swiper-slide">
<div class="imgBox"><img src="./img/float4.png" alt=""></div>
<p>图4</p>
</li>
<li class="swiper-slide">
<div class="imgBox"><img src="./img/float5.png" alt=""></div>
<p>图5</p>
</li>
</ul>
<div class="swiper-button-next"></div>
<div class="swiper-button-prev"></div>
</div>
</div>
</div>
<style lang="css">
.picBox {
background: #efefef;
}
.swiper {
width: calc(160px * 5 + 10px * 4);
}
ul.swiper-wrapper {
list-style: none;
padding-left: 0;
}
li.swiper-slide {
width: 160px;
background: #fff;
}
li.swiper-slide .imgBox {
width: 160px;
height: 400px;
}
li.swiper-slide img {
width: 100%;
height: 100%;
object-fit: cover;
object-position: center;
}
li.swiper-slide p {
text-align: center;
}
</style>
<script>
var mySwiper = new Swiper('.swiper', {
loop: true, // 循环模式选项
slidesPerView: 5, // 一页几个
slidesPerGroup: 5, // 几个一组
spaceBetween: 10, // 空隙
slidesOffsetBefore: 0, // 左边框偏移量
navigation: {
nextEl: '.swiper-button-next',
prevEl: '.swiper-button-prev',
},
})
</script>
</body>