vue3中解决loop模式图片较少时的报错问题以及与effect为coverflow时的冲突问题

【避坑指南】Swiper 轮播图 loop 失效?找不到 duplicate 节点?Vue3 + centeredSlides 深度解析 摘要:在 Vue 3 中使用 Swiper 轮播图时,开启 loop: true 和 centeredSlides: true 后,若数据量不足可能导致循环失效、末尾白屏或闪烁。新版 Swiper 采用“逻辑循环”机制,不再生成 swiper-slide-duplicate 节点,而是通过索引计算实现循环。为确保平滑循环,数据量需满足 slidesPerView × 2(建议 ×3)。解决方案包括动态补全数据至安全阈值,并使用唯一键值防止状态错乱。优化配置如 loopAdditionalSlides 可提升 阅读详情

1.下载swiper

npm i swiper

2.定义swiper,数量为3的情况下,loop为true的情况下

<template>
    <div>
        <swiper
            effect="coverflow"
            :centeredSlides="true"
            :grabCusor="true"
            :slidesPerView="3"
            :coverflowEffect="{
                rotate:50,
                stretch:0,
                depth:200,
                modifier:1,
                slideShadows:false
            }"
            :navigation="true"
            :pagination="{clickable:true}"
            :modules="modules"
            class="mySwiper"
            :space-between="120"
            :loop="true"
            ref="swiperRef"
        >
            <swiper-slide v-for="(item,key) in srcList" :key="key">
                <img :src="item" alt="" class="swiperimg">
            </swiper-slide>
        </swiper>
    </div>
</template>
<script setup>
import {ref,reactive} from 'vue';
import {Swiper,SwiperSlide} from 'swiper/vue';
import {Pagination,EffectCoverflow,Navigation} from 'swiper/modules';
import 'swiper/css';
import 'swiper/css/pagination';
import 'swiper/css/navigation';
import 'swiper/css/effect-coverflow';
const modules = [Pagination,EffectCoverflow,Navigation]
const srcList = ref([
    require('@/assets/ceshi/nature-1.jpg'),
    require('@/assets/ceshi/nature-2.jpg'),
    require('@/assets/ceshi/nature-9.jpg'),
])
</script>
<style scoped>
.swiper{
    width:calc(100% - 200px);
    margin: auto;
    padding-bottom: 50px;
}
.swiper-slide{
    width:500px ;
    background-position: center;
    background-size: cover;
}
.swiperimg{
    width: 100%;
    height: 500px;
}
</style>

效果如下

可以发现问题,索引默认为最后一个,并且还提示报错

这是因为loop模式下,图片数量必须要多于整屏图片数量的二倍,目前slidesPervView为3,说明至少需要6个图片(测试了一下5张图片也可以),但是我只需要3个图片

解决办法:在小于5张图片的情况下,复制一倍数量,编写自定义页码

代码如下:

<template>
    <div>
        <swiper
            effect="coverflow"
            :centeredSlides="true"
            :grabCusor="true"
            :slidesPerView="3"
            :coverflowEffect="{
                rotate:50,
                stretch:0,
                depth:200,
                modifier:1,
                slideShadows:false
            }"
            :navigation="true"
            :pagination="paginationOption"
            :modules="modules"
            class="mySwiper"
            :space-between="120"
            :loop="true"
            ref="swiperRef"
            @slide-change="onChangeSwiper"
        >
            <swiper-slide v-for="(item,key) in newSrcList" :key="key">
                <img :src="item" alt="" class="swiperimg">
            </swiper-slide>
            <div class="swiper-pagination"></div>
        </swiper>
    </div>
</template>
<script setup>
import {ref,reactive} from 'vue';
import {Swiper,SwiperSlide} from 'swiper/vue';
import {Pagination,EffectCoverflow,Navigation} from 'swiper/modules';
import 'swiper/css';
import 'swiper/css/pagination';
import 'swiper/css/navigation';
import 'swiper/css/effect-coverflow';
const modules = [Pagination,EffectCoverflow,Navigation]
const srcList = ref([
    require('@/assets/ceshi/nature-1.jpg'),
    require('@/assets/ceshi/nature-2.jpg'),
    require('@/assets/ceshi/nature-9.jpg'),
])
const currentImgIndex = ref(0)
const paginationOption = reactive({
    el:'.swiper-pagination',
    clickable:true,
    type:'custom',
    renderCustom:function(swiper,current,total){
        let paginationHtml = ''
        for(let i=0;i<srcList.value.length;i++){
            let activeClass="swiper-pagination-bullet-active"
            //默认显示第一个
            if(i==0){
                paginationHtml+=`<span class="swiper-pagination-bullet ${activeClass}"></span>`
            }else{
                paginationHtml+=`<span class="swiper-pagination-bullet"></span>`

            }  
        }
         return paginationHtml
    }
})
const onChangeSwiper = (item)=>{
    currentImgIndex.value = item.realIndex%srcList.value.length

    //切换时给页码加active
    let paginationElChild = document.querySelector(".swiper-pagination").children
    if(paginationElChild[0]){
        for(let i=0;i<srcList.value.length;i++){
            if(i==currentImgIndex.value){
                paginationElChild[currentImgIndex.value].setAttribute('class','swiper-pagination-bullet swiper-pagination-bullet-active')
            }else{
                paginationElChild[i].setAttribute('class','swiper-pagination-bullet')
            }
        }
    }
}
// 复制一倍数组
let copyList = JSON.parse(JSON.stringify(srcList.value))
let newSrcList = [...copyList,...copyList]

</script>
<style scoped>
.swiper{
    width:calc(100% - 200px);
    margin: auto;
    padding-bottom: 50px;
}
.swiper-slide{
    width:500px ;
    background-position: center;
    background-size: cover;
}
.swiperimg{
    width: 100%;
    height: 500px;
}

:deep(.swiper-pagination-bullet){
    margin-right: 10px;
    cursor: pointer;
}
</style>

完美解决

Spring AI 项目实战(五):Spring Boot + AI + DeepSeek + Redis 实现聊天应用上下文记忆功能(附完整源码) 本文介绍了如何基于Spring Boot 3.2、Spring AI 1.0.0-M4、DeepSeek API和Redis构建具备上下文记忆功能的智能聊天应用。项目采用现代化技术栈,包括Java 17、Maven、Lombok等,实现了智能对话、会话管理、异常处理等核心功能。文章详细讲解了环境搭建、配置管理(含Redis和AI服务集成)、核心组件设计(如消息实体、控制器和服务层实现),以及完整的项目结构。该项目提供了美观的Web界面和REST API,支持对话上下文存储(通过Redis实现)和系统监控,可 阅读详情

相关推荐

From Manual to Magic: How nnU-Net is Revolutionizing Biomedical Image Segmentation Without Human Int

本文探讨了nnU-Net如何通过全自动深度学习技术革新生物医学图像分割领域。作为自我配置的智能系统,nnU-Net无需人工干预即可完成从数据预处理到模型训练的全流程,显著提升医学影像分割的效率和精度,尤其在CT和MRI影像分析中表现卓越。

metal的博客 1083

vue使用swiper7

下载 npm i swiper 使用 import { Swiper, SwiperSlide } from "swiper/vue/swiper-vue"; import "swiper/swiper.min.css"; <swiper :slides-per-view="2" :space-between="10"> <swiper-slide> </swiper-slide> &l

qq_38677540的博客 4506

手把手教你用LTspice仿真TVS二极管:从选型验证到波形分析全流程

本文详细介绍了如何使用LTspice仿真TVS二极管,从选型验证到波形分析的全流程。通过搭建仿真环境、核心参数验证和系统级防护策略,帮助工程师低成本评估TVS性能,优化电路设计。特别适用于电源设计和接口防护领域,提升工作效率和设计准确性。

weixin_29234239的博客 646

解决在vue中使用swiper loop失效的问题

解决swiper 无法显示,无法切换下一页,循环数据不渲染

qq_49278774的博客 6131

MATLAB实战:蓝牙GFSK调制解调全流程解析(附误码率优化技巧)

本文深入解析了蓝牙GFSK调制解调在MATLAB中的全流程实现,包括高斯滤波器设计、调制解调技术及误码率优化技巧。通过实战案例和代码示例,帮助工程师提升蓝牙通信系统的性能表现,特别是在降低误码率方面的有效方法。

weixin_29046035的博客 277

图像去雨:超详细手把手写 pytorch 实现代码(带注释)

占个坑,过几天来写

书山有路,学海无涯! 1万+

vue-awesome-swiper解决coverflowEffect和loop属性冲突的问题

vue-awesome-swiper解决coverflowEffect和loop属性冲突的问题 coverflowEffect和loop在官网上不能同时使用,但有时需要3D旋转效果和循环同时存在,可以在swiper上增加一个判断就可以使这两个属性同时存在 <template> <div class="swiperTwoBox"> <swiper class="swiper-container" :options="swiperTwoOpti

weixin_45781661的博客 2202

vivado运行时报错 license文件更新操作

vivado使用:SYNTHESIS->Run Synthesis 时报错 [Common 17-345] A valid license was not found for feature ‘Synthesis’ and/or device ‘xc7vx485t’. Please run the Vivado License Manager for assistance in determiningwhich features and devices are licensed for your sy

qq_44692266的博客 2万+

vue中使用swiper的coverflowEffect没有效果

看看自己 安装的swiper版本,swiper库是Swiper(4-6)的配置选项,所以把包的版本降到相应的版本就好了 cnpm i swiper@4.3.0 -S "swiper": "^4.3.0", 在main.js全局引入样式 //引入swiper样式 import "../node_modules/swiper/dist/css/swiper.css"; 相应的页面引入swiper即可 import Swiper from "swiper"; ...

weixin_46264539的博客 2470

KEPServerEX与三菱iQ-R系列PLC通讯

KEPServerEX与三菱iQ-R系列PLC通讯Mitsubishi Ethernet北京东方鼎晨科技有限公司目 录1. 前言2. 三菱PLC端相关设置3. Kepware端相关设置KEPServerEX是美国PTC Kepware公司生产的具有行业性的连接平台,KEPServerEX支持150多种通讯协议,用于向您的所有应用程序提供单一来源的工业自动化数据。该平台的设计使用户能够通过一个直观的用户界面来连接、管理、监视和控制不同的自动化设备和软件应用程序。KEPServerEX利用OPC(自动化产业的互

qq_28768521的博客 8096

QT西游回合制源码+java后台管理系统

这是一套回合制游戏源码,很适合学习。

renkai721的专栏 2536

VUE Swiper设置loop模式,第二轮首图click失效

swiper vue中使用时,loop模式下点击事件无法触发bug对应方法

Akikang的博客 1996

OpenRubrics:自动化评估工具优化LLM对齐效果

在大型语言模型(LLM)应用中,模型输出与人类价值观的对齐是关键挑战。传统人工反馈强化学习(RLHF)依赖大量标注,成本高且一致性差。OpenRubrics作为开源工具,通过结构化准则实现自动化评估,显著提升效率。其核心原理是将主观评价转化为可量化的多维指标,支持动态权重调整,并兼容主流RLHF框架。该工具在降低标注成本的同时,通过Fleiss' Kappa系数等指标保证评估一致性,适用于多语言和医疗等专业领域,为LLM对齐提供了工程化解决方案。

weixin_28730037的博客 359

Vue2结合Swiper实现动态多卡片轮播:突破vue-element三张限制的实战方案

本文针对Vue2项目中Element UI等框架轮播组件限制三张卡片的问题,提供了基于Swiper的实战解决方案。详细介绍了如何通过vue-awesome-swiper集成Swiper,并配置slidesPerView、coverflow等关键参数,实现动态多卡片轮播,同时涵盖响应式适配、交互增强与常见避坑指南。

html8的博客 452

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

vue+antdsign 使用vue-awesome-swiper的coverflow效果笔记

项目使用的vue-awesome-swiper版本为3.1.3,vue-awesome-swiper还需要搭配swiper使用,swiper的版本依据vue-awesome-swiper依赖中swiper.vue的注释来引入。,会导致接口已经返回图片信息,但是页面上没有渲染出图片的问题,所以标签添加。2)由于需调用后端接口返回数据,与swiper的渲染存在。,即标签中不可有scope;1)swiper的样式要设置为。,控制swiper渲染的时机。

n_2021的博客 650

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

解决vue中使用swiper 同时设置loop和slidesPerView时 点击事件失效问题

在实际运用swiper轮播图插件时,有时会出现需要同时使用loop: true和两种属性的情况。此时,会出现点击事件失效问题,主要原因是loop: true会产生复制的slide,而在“假的”slide上正常绑定的点击事件无法生效。解决点击事件失效问题的关键,在于获取真实的index以及设置属性。

LadyLotus的博客 8980

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

swiper在vue中的基本使用及常见问题解决

1.说明:本文针对的环境是vue2及swiper6以下版本.另:本文只适合教小白如何在vue中使用swiper,并不会把swiper的api都码一遍,了解更多swiper详情,请移步swiper官网.这里只是最简单的入门教程.大佬勿喷. 2.废话不多说,先上效果. 3.开始: 3.1: 安装依赖. npm install vue-awesome-swiper --save (注意:如果安装后,启动项目报Module not found: Error: Can’t resolve ‘swiper/dist

您的博客 1227

swiper堆叠图实现分析及参数解释

swiper 4.5.1、首先我们是基于effect切换效果中的"coverflow"来实现,然后配合coverflowEffect里的一些参数设置,达到上述效果

落花生 1537

swiper中Effect-coverflow的bug:从最后切换到第一张出现的空白部分

默认为0 ==> 前后复制一个;loopAdditionalSlides为1 ==> 前后复制两个。添加新的属性:loopAdditionalSlides。

qq_48783694的博客 1435

【Swiper 】Vue3 中 Swiper 插件 loop 无限滚动、并且暂停的问题

上午把官网的合作伙伴做了,好坑,swiper 自动滚动展示的数量的两倍必须小于等于组件的渲染数量,才能进行自动滚动,官网居然都没有说。

日常问题bug解决、学习分享、个人杂谈等等随便写写哈哈哈 2649

vue使用swiper轮播组件开启loop模式时的问题总结

最近在vue项目中使用了swiper插件来完成轮播功能,没有开启循环模式,一切都很顺利 具体怎么在vue项目中引入swiper插件,这个太简单就不提了,上代码 html <div class="swiper-container"> <div class="swiper-wrapper"> <t...

weixin_30471561的博客 1651

【Vue项目中使用Swiper】

在vue中使用swiper,如何在swiper一次展示多张图片

weixin_48240707的博客 1855

vue中使用swiper 已配置loop 不轮播问题

但是由于动态加载是在初始化完成进行的操作,所以无法确定swiper-wrapper内部swiper-slide的个数,不会轮播。可能是swiper在初始化的时候会扫描swiper-wrapper内部swiper-slide的个数,从而完成初始化。observeParents:true,//修改swiper的父元素时,自动初始化swiper。observer:true,//修改swiper自己或子元素时,自动初始化swiper。

会飞的程序猿 2379

swiper在vue项目中loop循环轮播失效

长话短说,在vue(2.5.x)中使用swiper(4.3.3),轮播加了autoplay和loop、observer、observeParents等参数还是很诡异的无法循环轮播; 那么可以这样写代码试试: this.$api.queryImages().then((resp) =&gt; { if(resp &amp;&amp; resp.data.resultCode == "0"...

小问's blog 1万+

vue swiper循环loop不生效,出现空白页

原因1:可能是没有在外层加上vi-if判断图片所在的数组是否存在; 原因2:可能使用了v-lazy,不能使用v-lazy; 参考配置: swiperBannerOption:{ slidesPerView:1, loopAdditionalSlides:2, spaceBetween:0, notNextTi...

wxy964666897的博客 3504

Vue 异形轮播图实现方案:基于 vue-awesome-swiper 的 3D 效果实践

本文介绍了基于vue-awesome-swiper实现3D透视效果轮播图的方法。通过Swiper的coverflow特效,创建了中间大图突出、两侧小图渐变的视觉效果,支持自动轮播和点击切换。关键点包括:动态数据加载处理、coverflow参数配置、滑动与点击事件区分、以及通过CSS实现差异化样式。文章提供了完整组件代码和配置说明,并建议了自动轮播、懒加载等优化方向。这种轮播效果能显著提升页面视觉体验,适用于产品展示等场景。

weixin_43699654的博客 1250
上一篇: 解决不同的路由进入相同页面,内容不更新问题
夜,未眠
博客等级 码龄5年 33粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值